如何迭代非二叉树?

时间:2020-02-09 18:06:26

标签: python python-3.x tree iteration

我正在尝试使用许多遍历方法在Python中创建一个非二进制树。最重要的是只取叶子。 因此,我编写了一个小的测试代码来熟悉Python中的树结构。

class Tree:
    def __init__(self, cargo, children=[]):
        self.cargo = cargo
        self.children  = children


my_root = Tree("root",[])
my_root.children.append(Tree("level1_node1"))


my_root.children[0].children.append(Tree("level2_node1", ["lev_3_1"]))
my_root.children[0].children.append(Tree("level2_node2", ["lev_3_2"]))
my_root.children[0].children.append(Tree("level2_node3", ["lev_3_3"]))
my_root.children[0].children.append(Tree("level2_node4", ["lev_3_4"]))
my_root.children.append(Tree("level1_node2"))
my_root.children[1].children.append(Tree("level2_node1", ["lev_3_5"]))
my_root.children[1].children.append(Tree("level2_node2", ["lev_3_6"]))
my_root.children[1].children.append(Tree("level2_node3", ["lev_3_7"]))
my_root.children[1].children.append(Tree("level2_node4", ["lev_3_8"]))


for node_of_level1 in my_root.children:
    for node_of_level2 in node_of_level1.children:
        print(node_of_level2.children)

但是,当我运行它时,我要花掉所有叶子的2倍。具体来说,似乎第一个level1_node2有8个孩子,而父level1_node2同时又有8个孩子。我的输出是这样的:

['lev_3_1']
['lev_3_2']
['lev_3_3']
['lev_3_4']
['lev_3_5']
['lev_3_6']
['lev_3_7']
['lev_3_8']
['lev_3_1']
['lev_3_2']
['lev_3_3']
['lev_3_4']
['lev_3_5']
['lev_3_6']
['lev_3_7']
['lev_3_8']

0 个答案:

没有答案
相关问题