#建二元樹
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
沒有留言:
張貼留言