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

Easy

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

Solution:

什么是二叉搜索树?

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

二叉搜索树

什么是高度平衡树?

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

  • 左分支平衡
  • 右分支平衡
  • 左右分支树的高度差不大于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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,491评论 1 31
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,355评论 0 25
  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 9,222评论 0 7
  • 因为之前就复习完数据结构了,所以为了保持记忆,整理了一份复习纲要,复习的时候可以看着纲要想具体内容。 树 树的基本...
    牛富贵儿阅读 7,012评论 3 10
  • 目录 [1. 顺序查找][2. 二分查找][3. 插值查找][4. 斐波那契查找][5. 树表查找][6. 分块查...
    jiangmo阅读 17,851评论 4 6