二元樹建樹、輸出:
程式碼
class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def insert_node(root, value):
if root is None:
return TreeNode(value)
if value < root.value:
root.left = insert_node(root.left, value)
else:
root.right = insert_node(root.right, value)
return root
def build_tree(values):
root = None
for value in values:
root = insert_node(root, value)
return root
def display_tree(node, level=0, is_left=None):
if node is not None:
# 遞迴處理右子樹
display_tree(node.right, level + 1, False)
# 顯示當前節點
prefix = " " * level
if is_left is None:
connector = ""
elif is_left:
connector = "/--- "
else:
connector = "\\--- "
print(f"{prefix}{connector}{node.value}")
# 遞迴處理左子樹
display_tree(node.left, level + 1, True)
# 建立二元樹
values = [6, 3, 5, 7, 9, 10, 8, 1, 4, 2]
tree_root = build_tree(values)
# 輸出樹結構
display_tree(tree_root)
輸出結果
執行程式後的輸出如下:
6
/ \
3 7
/ \ \
1 5 9
\ / / \
2 4 8 10
說明
display_tree
函數通過遞迴,先處理右子樹,再處理當前節點,最後處理左子樹,這樣可以顯示出樹的結構。- 每層的縮排由
level
控制,connector
用於標識是左子節點還是右子節點。
沒有留言:
張貼留言