Convert Sorted Array to Binary Search Tree有序数列构建BST

Easy

给定升序的有序数列,简历高度平衡的二叉搜索树。

Solution:

什么是二叉搜索树?

left_subtree (keys) ≤ node (key) ≤ right_subtree (keys)

Convert Sorted Array to Binary Search Tree有序数列构建BST_第1张图片
二叉搜索树

什么是高度平衡树?

空树平衡,非空二叉树满足下面条件时为平衡:

  • 左分支平衡
  • 右分支平衡
  • 左右分支树的高度差不大于1

所以上图其实也是一棵高度平衡树。

知道了高度平衡二叉搜索树的定义,那么思路就比较清晰了。

  1. 找有序序列中间的值作为树的根节点。如果有序数列含有偶数个值应该选中间两个数的哪个呢?答案是无所谓的,因为都可以构建成功,这道题的答案不唯一。
  2. 对中间数的左边序列和右边序列重复1。
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def sortedArrayToBST(self, nums):
        """
        :type nums: List[int]
        :rtype: TreeNode
        """
        try:
            mid_index = len(nums)/2
            root = TreeNode(nums[mid_index])
            root.left = self.sortedArrayToBST(nums[:mid_index])
            root.right = self.sortedArrayToBST(nums[mid_index+1:])
            return root
        except:
            return None

你可能感兴趣的:(Convert Sorted Array to Binary Search Tree有序数列构建BST)