我正在尝试使用许多遍历方法在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']