鱼C论坛

 找回密码
 立即注册
查看: 739|回复: 1

[已解决]python 二叉树 前序名

[复制链接]
发表于 2020-5-30 00:31:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

                               
登录/注册后可看大图



求解
最佳答案
2020-5-30 02:09:17
本帖最后由 Stubborn 于 2020-5-30 02:43 编辑
class Tree:
    class Node:
        def __init__(self, value, left, right):
            self.value = value
            self.left = left
            self.right = right

    def create(self, string: str):
        data = string.split(',')

        root = Tree.Node(data.pop(0), None, None)
        l = [root]

        while True:
            try:
                node = l.pop(0)
                node.left = Tree.Node(
                    data.pop(0), None, None
                )
                l.append(node.left)
                node.right = Tree.Node(
                    data.pop(0), None, None
                )
                l.append(node.right)
            except:
                return root

    def traversal(self, node):

        if node is None: return
        # 打印前序遍历        
        # print(node.value)

        self.traversal(node.left)
        # 打印中序遍历
        # print(node.value)

        self.traversal(node.right)
        # 打印后续遍历
        # print(node.value)
        
    def traversal(self, node, result=None):
        # 需要输出列表的话
        if result is None:
            result = list()

        if node is None: return

        result.append(node.value)

        self.traversal(node.left, result)
        self.traversal(node.right, result)
        return result

a = Tree()
root = a.create("1,2,3,4")
a.traversal(root)
# >>> 1 2 4 3 

备注,输入的 # 我这里没有处理,思考下,自己做处理。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 02:09:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Stubborn 于 2020-5-30 02:43 编辑
class Tree:
    class Node:
        def __init__(self, value, left, right):
            self.value = value
            self.left = left
            self.right = right

    def create(self, string: str):
        data = string.split(',')

        root = Tree.Node(data.pop(0), None, None)
        l = [root]

        while True:
            try:
                node = l.pop(0)
                node.left = Tree.Node(
                    data.pop(0), None, None
                )
                l.append(node.left)
                node.right = Tree.Node(
                    data.pop(0), None, None
                )
                l.append(node.right)
            except:
                return root

    def traversal(self, node):

        if node is None: return
        # 打印前序遍历        
        # print(node.value)

        self.traversal(node.left)
        # 打印中序遍历
        # print(node.value)

        self.traversal(node.right)
        # 打印后续遍历
        # print(node.value)
        
    def traversal(self, node, result=None):
        # 需要输出列表的话
        if result is None:
            result = list()

        if node is None: return

        result.append(node.value)

        self.traversal(node.left, result)
        self.traversal(node.right, result)
        return result

a = Tree()
root = a.create("1,2,3,4")
a.traversal(root)
# >>> 1 2 4 3 

备注,输入的 # 我这里没有处理,思考下,自己做处理。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 01:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表