Python有序列表前序树遍历

2024-04-29 12:45:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,尝试返回一个有序树的preorder列表(注意:不是二叉树)。我在递归到达树的一片叶子之后遇到了一些麻烦。如何让它回到上一个节点?以下是我目前为止的代码:

def OrdPreOrder(T):
    if Is_OrdLeaf(T):
        return []
    else:
        for t in Subtrees(T):
            return [OrdRoot(t)] + OrdPreOrder(t)

提前谢谢你


Tags: 代码列表forreturnif节点isdef
1条回答
网友
1楼 · 发布于 2024-04-29 12:45:24

这个问题我不太清楚,但希望这能有所帮助。 您需要对有序树进行预排序遍历。 预排序遍历方法 1首先打印节点中存储的值 2然后打印存储在children中的值(根据某些原则) 首先

How do I get it to go back up to the previous node?

根据我在上面写的预顺序遍历的定义,我不明白为什么需要返回并重新访问父节点。在

class Node:
    def __init__(self, data):
        self.__data = data
        self.__children = []

    def identifier(self):
        return self.__data

    def children(self):
        return self.__children

    def add_child(self, data):
        self.__children.append(data)

class Tree:
    def __init__(self):
        self.__nodes = {}

    def nodes(self):
        return self.__nodes

    def add_node(self, data, parent=None):
        node = Node(data)
        self[data] = node

        if parent is not None:
            self[parent].add_child(data)

        return node

    def traversal(tree):
        if tree == None:
            return
        print (tree.identifier())
        for child in tree.children():
            traversal(child)

我也不太精通Python中的数据结构(代码中可能有错误)。但希望它能为你指明正确的方向。在

相关问题 更多 >