(二)下面陣列Arr[0:14]表示一棵二元樹,陣列的元素代表該樹每個節點的鍵值,請撰寫一個演算法重建出該二元樹。該樹是否為一棵二元搜尋樹 (Binary Search Tree)?(15分)

内容查看

要重建二元樹,你可以使用遞迴的方式根據陣列中的元素來建立節點。以下是一個示例的演算法:
class Node:
def __init__(self, key):
self.key = key
self.left = None
self.right = None

def build_binary_tree(arr, start, end):
if start > end:
return None

mid = (start + end) // 2
root = Node(arr[mid])
root.left = build_binary_tree(arr, start, mid – 1)
root.right = build_binary_tree(arr, mid + 1, end)

return root

# 測試範例
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
root = build_binary_tree(arr, 0, len(arr) – 1)
這個演算法中,build_binary_tree 函式接受一個陣列 arr、起始索引 start 和結束索引 end 作為參數。在每次遞迴呼叫中,它計算中間索引 mid,並使用 arr[mid] 創建一個新節點作為根節點。然後,遞迴呼叫 build_binary_tree 來建立根節點的左子樹和右子樹,範圍分別為 start 到 mid – 1 和 mid + 1 到 end。最後,返回根節點。

關於該樹是否為二元搜尋樹,取決於陣列中元素的排列順序。如果陣列 arr 是按照升序(或降序)排列的,那麼重建的二元樹將是一棵二元搜尋樹。但如果陣列中元素的排列不是有序的,那麼重建的樹不會是二元搜尋樹。

点点赞赏,手留余香 给TA打赏

AI创作

0

評論0

支持多种货币
支持多种货币付款,满足您的付款需求
7天无忧退换
安心无忧购物,售后有保障
专业客服服务
百名资深客服7*24h在线服务
发货超时赔付
交易成功极速发货,专业水准保证时效性
顯示驗證碼

社交帳號快速登錄