python构建多叉树及多叉树的倒序遍历

AllTreePath=[]
class MultywayTree():
    class Node():#初始化节点
        def __init__(self,data):
            self.data=data
            self.child_list=[]
            self.parent=None

    def __init__(self,root):#初始化根节点
        self.root=self.Node(root)

    def add(self,obj):
        self.append(self.root,obj)

    def append(self,node,obj):
        if node.data[2]-obj[2]==1 and node.data[0]>obj[0] and node.data[1]>obj[1]:#条件判断子节点插入位置
            node_obj=self.Node(obj)
            node.child_list.append(node_obj)
            node_obj.parent=node
        else:#若False,往下遍历子节点的子节点
            if node.child_list:
                for child in node.child_list:
                    self.append(child,obj)
    def scan(self):
        self.traversal(self.root)

    def traversal(self,node):#递归遍历所有节点
        if node.child_list:
            for child in node.child_list:
                self.traversal(child)
        else:#遍历至叶子节点,往上依次输出父节点。
            node_list=[]
            while node.parent:
                node_list.append(node.data)
                node=node.parent
            node_list.append(node.data)
            AllTreePath.append(node_list)

输入:[(6, 6, 4), (4, 7, 3), (5, 5, 3), (3, 4, 2), (5, 3, 2), (1, 1, 1), (1, 3, 1), (1, 5, 1), (5, 1, 1)]
输出:
[(1, 1, 1), (3, 4, 2), (5, 5, 3), (6, 6, 4)]
[(1, 3, 1), (3, 4, 2), (5, 5, 3), (6, 6, 4)]


版权声明:本文为cloud____原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。