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表