2024年1月11日 星期四

Tree using python dictionary

 #建二元樹

def inorder_traversal(tree, node):

    if node:

        # 先遞歸遍歷左子樹

        inorder_traversal(tree, tree[node][0])

        

        # 訪問根節點

        print(node, end=' ')

        

        # 遞歸遍歷右子樹

        inorder_traversal(tree, tree[node][1])

        

def preorder_traversal(tree, node):

    if node:

        # 訪問根節點

        print(node, end=' ')


        # 先遞歸遍歷左子樹

        preorder_traversal(tree, tree[node][0])

        

        

        # 遞歸遍歷右子樹

        preorder_traversal(tree, tree[node][1])


def postorder_traversal(tree, node):

    if node:

        # 先遞歸遍歷左子樹

        preorder_traversal(tree, tree[node][0])

    

         # 遞歸遍歷右子樹

        preorder_traversal(tree, tree[node][1])


        # 訪問根節點

        print(node, end=' ')


# 以剛才建立的二元樹為例

binary_tree = {

    1: [2, 3],

    2: [4, 5],

    3: [6, None],

    4: [None, None],

    5: [None, None],

    6: [None, None]

}


print("Inorder Traversal:")

inorder_traversal(binary_tree, 1)

print("\npreorder Traversal:")

preorder_traversal(binary_tree, 1)

print("\npostorder Traversal:")

postorder_traversal(binary_tree, 1)


# 執行結果

Inorder Traversal:

4 2 5 1 6 3 

preorder Traversal:

1 2 4 5 3 6 

postorder Traversal:

2 4 5 3 6 1 

沒有留言:

張貼留言