对n个元素构成的序列,构造并输出一棵平衡二叉树
时间: 2023-04-18 15:03:59 浏览: 139
构造平衡二叉树的基本思路是:将序列排序后,取中间元素作为根节点,然后将序列分为左右两部分,分别递归构造左子树和右子树。
具体步骤如下:
1. 对序列进行排序,得到有序序列。
2. 取中间元素作为根节点。
3. 将序列分为左右两部分,分别递归构造左子树和右子树。
4. 左子树的根节点为有序序列的中间元素,右子树的根节点为有序序列的中间元素的下一个元素。
5. 递归构造左子树和右子树,直到序列为空或只有一个元素。
6. 返回根节点。
最终得到的二叉树是平衡的,因为每个节点的左右子树高度差不超过1。
代码实现:
```
class TreeNode:
def __init__(self, val=, left=None, right=None):
self.val = val
self.left = left
self.right = right
def sortedArrayToBST(nums):
if not nums:
return None
mid = len(nums) // 2
root = TreeNode(nums[mid])
root.left = sortedArrayToBST(nums[:mid])
root.right = sortedArrayToBST(nums[mid+1:])
return root
```
其中,`sortedArrayToBST`函数接受一个有序序列作为参数,返回构造的平衡二叉树的根节点。
阅读全文
相关推荐















