博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode每天一题】Convert Sorted Array to Binary Search Tree(根据有序数组构建平衡二叉树)...
阅读量:6331 次
发布时间:2019-06-22

本文共 1527 字,大约阅读时间需要 5 分钟。

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

Example:

Given the sorted array: [-10,-3,0,5,9],One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:      0     / \   -3   9   /   / -10  5 思路

  根据题目的意思我们需要根据有序数组来构建一个平衡二叉树,并且要满足平衡二叉树的定义。这个题我们可以使用分而治之的思想来解决。就是每次将数组分成两部分左边是左子树的部分,右边是右子树的部分。依次划分,知道数组划分完毕。代码的话最好使用递归来进行解决。   另外,leetcode上还有一道和这道类似的,只不过另外一道中是链表而不是数组。其实这道题我们可以先将链表中的数字存储到数组中,然后按照上面的办法来构建二叉树,单数如果不使用辅助空间的话,解决相对于数组就麻烦一些,每次都需要求链表的中间节点来进行不断的遍历。依次反复。 解决代码

 
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 sortedArrayToBST(self, nums):10         """11         :type nums: List[int]12         :rtype: TreeNode13         """14         if not nums:       # 数组为空直接返回None15             return None16         if len(nums) == 1:    # 当数组中只有一个数据时返回构造的节点17             return TreeNode(nums[0])18         mid = len(nums) // 2      #去数值的中间值19         root = TreeNode(nums[mid])   # 根据中间值构造节点20         root.left = self.sortedArrayToBST(nums[:mid])   # 左子树的节点21         root.right = self.sortedArrayToBST(nums[mid+1:])  # 右子树的节点22         return root  # 返回当前节点

转载于:https://www.cnblogs.com/GoodRnne/p/10871826.html

你可能感兴趣的文章
我们需要真正的原创内容
查看>>
什么是你的核心竞争力之七弱点让你闪光
查看>>
关闭Windows Server的IE增强安全配置(ESC)
查看>>
SQL Server 2012笔记分享-35:配置客户端网络协议
查看>>
【VMC实验室】在QCloud上创建您的SQL Cluster(2)
查看>>
PHP流程控制的替代语法
查看>>
Exchange 2013 OAB不能下载的解决办法
查看>>
javascript 日期时间函数(经典+完善+实用)
查看>>
发发牢骚,觉得走c#这条路,不该太浮躁
查看>>
第十三章 别忘了我——SignalTap II Logic Analyzer
查看>>
教会你Linux Shell自动交互的三种方法
查看>>
在查询分析器中直接查询Excel中的数据
查看>>
cuteEditor 编码问题
查看>>
放羊挣钱娶媳妇生娃放羊挣钱娶媳妇生娃
查看>>
KMP代码实现
查看>>
Silverlight中服务通信方式的选择(WCF、Data Service、Ria Service)
查看>>
IE7漏洞蔓延 所有IE浏览器均存在高危漏洞
查看>>
OpenMP系列--初次体验多核并行编程
查看>>
校园一卡通系统发展概况及未来趋势
查看>>
在ubuntu下安装rails
查看>>