tree_candidates = dict()
Node_num, root_val = map(int, input().split())
for _ in range(Node_num):
root, left, right = map(int, input().split())
tree_candidates[root]=[left, right]
#前序遍历,tree_candidates也可以不作为入口参数传入,直接作为全局变量来读取
def pre_traversal(root, tree_candidates):
print(root, end=" ")
#节点值为0时不进行递归
if tree_candidates[root][0]:
pre_traversal(tree_candidates[root][0], tree_candidates)
if tree_candidates[root][1]:
pre_traversal(tree_candidates[root][1], tree_candidates)
#后序遍历
def post_traversal(root, tree_candidates):
if tree_candidates[root][0]:
post_traversal(tree_candidates[root][0], tree_candidates)
if tree_candidates[root][1]:
post_traversal(tree_candidates[root][1], tree_candidates)
print(root, end=" ")
#中序遍历
def in_traversal(root, tree_candidates):
if tree_candidates[root][0]:
in_traversal(tree_candidates[root][0], tree_candidates)
print(root, end=" ")
if tree_candidates[root][1]:
in_traversal(tree_candidates[root][1], tree_candidates)
pre_traversal(root_val, tree_candidates)
print("")
in_traversal(root_val, tree_candidates)
print("")
post_traversal(root_val, tree_candidates)
参考大佬的思路,使用hash表(字典)保存每个节点的信息,在递归过程中遍历hash表的值 此处需要注意的是节点值应当是唯一的,否则不能直接使用hash表