Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chuyển mảng đã sắp xếp thành cây tìm kiếm nhị phân trong Python


Cho mảng đã sắp xếp A. Tạo cây BST cân bằng chiều cao (độ sâu hai cây con chênh lệch ≤1). Ví dụ: [-10,-3,0,5,9] → [0,-3,9,-10,null,5].

Chuyển mảng đã sắp xếp thành cây tìm kiếm nhị phân trong Python

Giải pháp

Đệ quy:

  • Nếu A rỗng → Null.
  • Chọn phần tử giữa làm gốc.
  • Chia mảng thành hai phần trái/phải, đệ quy xây cây con.

Ví dụ

Triển khai Python:

class TreeNode: 
    def __init__(self, data, left = None, right = None): 
        self.data = data 
        self.left = left 
        self.right = right 
# ... (hàm hỗ trợ insert, in cây) 
class Solution(object): 
    def sortedArrayToBST(self, nums): 
        if not nums: 
            return None 
        mid = nums[len(nums)//2] 
        root = TreeNode(mid) 
        root.left = self.sortedArrayToBST(nums[:len(nums)//2]) 
        root.right = self.sortedArrayToBST(nums[len(nums)//2 +1 :]) 
        return root 
nums = [-10,-3,0,5,9] 
ob1 = Solution() 
bst = ob1.sortedArrayToBST(nums) 
level_order(bst)

Đầu vào

nums = [-10,-3,0,5,9]

Đầu ra

[0,-3,9,-10,5,]