我试图在大树节点中找到最左边的叶子和最右边的叶子,这是我的代码
from bigtree import nested_dict_to_tree, print_tree
path_dict = {
"name": "a",
"points": 100,
"side":'H',
"children": [
{
"name": "b",
"points": 50,
"side":'L',
"children": [
{"name": "d", "points": 40,"side":'L'},
{"name": "e", "points": 20,"side":'R'},
],
},
{"name": "c", "points": 60,"side":'R' ,
"children": [
{"name": "f", "points": 40,"side":'L'},
{"name": "g", "points": 20,"side":'R'},
]},
],
}
tree_root = nested_dict_to_tree(path_dict)
print_tree(tree_root)
对于下面的输出,我需要将“d”作为最右边的节点,将“g”作为最左边的节点
a
├── b
│ ├── d
│ └── e
└── c
├── f
└── g
bigtree.utils
模块中的迭代方法:
from bigtree import utils
# The left most leaf is the first node in a post-order traversal
first = next(utils.iterators.postorder_iter(tree_root))
# The right most leaf is the last node in a pre-order traversal
last = None
for last in utils.iterators.preorder_iter(tree_root):
pass
# Results:
print(first)
print(last)
请注意,您将左右混淆了。树是这样的:
_a_
/ \
b c
/ \ / \
d e f g
所以“d”是最左边的叶子,“g”是最右边的叶子。 (另请参阅初始字典中的“侧键”)。