Python有序列表预订树遍历

时间:2015-10-25 18:59:46

标签: python recursion tree

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

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

提前致谢,

1 个答案:

答案 0 :(得分:1)

这个问题对我来说不是很清楚,但希望这会有所帮助。 您想要对有序树进行预先遍历遍历。 预订遍历意味着 1.首先打印存储在节点中的值 2.然后打印存储在儿童中的值(根据某些原则) 首先,

  

如何让它返回上一个节点?

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

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中的数据结构(代码中可能存在错误)。但希望它可能会指出你正确的方向。