leetcode108/109 Convert Sorted Array to Binary Search Tree

108. Convert Sorted Array to Binary Search Tree
題目描述

給定一個有序升序數組,輸出可能的平衡二叉樹


Example:

Given the sorted array: [-10,-3,0,5,9]

One possible answer is: [0,-3,9,-10,null,5]

      0
     / \
   -3   9
   /   /
 -10  5

解題思路

平衡二叉樹就是左右子樹高度不能超過1。從數組的角度來看,每次取數組中間數作爲根節點,可保證左右剩下的元素個數相差不超過1。

繼續左子樹的中間數作爲根節點,繼而又保證其左右剩下的元素個數相差不超過1。以此遞歸,最終能組成平衡二叉樹。

數組的中間數作爲根節點,左節點爲數組左半部分的中間值,右節點爲數組右半部分的中間數。當傳入的數組爲空時結束遞歸。

代碼

class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
        return self.helper(nums, 0, len(nums)-1)
        
    def helper(self, nums, left, right):
        if left <= right:
            mid = (left + right)//2
            node = TreeNode(nums[mid])
            node.left = self.helper(nums, left, mid-1)
            node.right = self.helper(nums, mid+1, right)
            return node   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章