在python中实现任意树 似乎不存在类似的话题。
我需要从一行整数构建一棵树,以备将来处理。这一行包含您可以使用在python中实现任意树 似乎不存在类似的话题。,python,python-3.x,tree,Python,Python 3.x,Tree,我需要从一行整数构建一棵树,以备将来处理。这一行包含您可以使用dict其中的值将是子项列表来表示树。这将使树的构造变得微不足道,因为对于每个节点,您只需将当前索引附加到父子节点即可。下面是一个使用withlist作为默认工厂的示例: from collections import defaultdict s = '4 -1 4 1 1' tree = defaultdict(list) for node, parent in enumerate(int(x) for x in s.split
dict
其中的值将是子项列表
来表示树。这将使树的构造变得微不足道,因为对于每个节点,您只需将当前索引附加到父子节点即可。下面是一个使用withlist
作为默认工厂的示例:
from collections import defaultdict
s = '4 -1 4 1 1'
tree = defaultdict(list)
for node, parent in enumerate(int(x) for x in s.split()):
tree[parent].append(node)
# Remove "parent" of the root node
root = tree.pop(-1)[0]
def print_tree(root, tree, prefix=''):
print(prefix + str(root))
for child in tree[root]:
print_tree(child, tree, prefix + ' ')
print_tree(root, tree)
输出:
1
3
4
0
2
更新:下面是计算树中节点数的树遍历的另一个示例。对于访问的每个节点,它返回1+子节点的总和:
def count_nodes(root, tree):
return 1 + sum(count_nodes(child, tree) for child in tree[root])