zoukankan      html  css  js  c++  java
  • 第108题:将有序数组转换为二叉搜索树

    第108题:将有序数组转换为二叉搜索树

    描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。

    示例:

    给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

    0

    /

    -3   9

    /   /

    -10  5

    解题思路:递归法

    我们要构建一颗二叉树,因为题中给出的数组为有序数组,想到使用二叉树的中序遍历进行构建。

    首先确定构建平衡二叉树的条件:左右子树都是平衡的。想到先构建根节点,再分别构建左右平衡的子树。

    Python代码:

     1 # Definition for a binary tree node.
     2 # class TreeNode(object):
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.left = None
     6 #         self.right = None
     7 
     8 class Solution(object):
     9     def __init__(self):
    10         nums = [] 
    11 
    12     def sortedArrayToBST(self, nums):
    13         """
    14         :type nums: List[int]
    15         :rtype: TreeNode
    16         """
    17         self.nums = nums
    18         return self.helper(0, len(nums) - 1)
    19 
    20     def helper(self, left, right):
    21         if left > right:
    22             return None 
    23         mid = (left + right) // 2
    24 
    25         root = TreeNode(self.nums[mid])
    26         root.left = self.helper(left, mid - 1)
    27         root.right = self.helper(mid + 1, right)
    28         return root
    书痴者文必工,技痴者艺必良
  • 相关阅读:
    linux_一些shell命令分析记录
    linux shell if
    linux_磁盘挂载
    远程工具记录
    oracle_多字段统计(多count)
    tomcat_日志打印格式问题
    cgo -rpath指定动态库路径
    Ubuntu下两个gcc版本切换
    [转]Go与C语言的互操作
    [转]【流媒體】H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
  • 原文地址:https://www.cnblogs.com/Little-Dandelion/p/13530713.html
Copyright © 2011-2022 走看看