「樹葉」(leaf nodes)是指沒有子節點的節點,即其左右子節點均為 None
的節點。以下是如何實現查找樹葉節點的 Python 程式。
Python 程式碼
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 find_leaves(node, leaves):
if node is not None:
# 如果當前節點是樹葉,加入結果
if node.left is None and node.right is None:
leaves.append(node.value)
else:
# 遞迴檢查左子樹
find_leaves(node.left, leaves)
# 遞迴檢查右子樹
find_leaves(node.right, leaves)
return leaves
# 建立二元樹
values = [6, 3, 5, 7, 9, 10, 8, 1, 4, 2]
tree_root = build_tree(values)
# 找到所有樹葉
leaves = find_leaves(tree_root, [])
# 輸出結果
print("樹葉節點:", leaves)
運行結果
對於二元樹:
6
/ \
3 7
/ \ \
1 5 9
\ / / \
2 4 8 10
樹葉節點為:
[2, 4, 8, 10]
程式解釋
find_leaves
函數:- 檢查當前節點是否為樹葉(左右子節點均為
None
)。 - 如果是,將節點值加入
leaves
。 - 否則,遞迴檢查左子樹和右子樹。
- 檢查當前節點是否為樹葉(左右子節點均為
結果:
- 結果列出所有樹葉節點的值,按遍歷順序。
沒有留言:
張貼留言