最小高度树
Question
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。
在二叉搜索树中:
若任意结点的左子树不空,则左子树上所有结点的值均不大于它的根结点的值。
若任意结点的右子树不空,则右子树上所有结点的值均不小于它的根结点的值。
任意结点的左、右子树也分别为二叉搜索树。
Example 1:
给定有序数组: [-10,-3,0,5,9],
一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:
0 / \ -3 9 / / -10 5
Approach 1: 迭代法
对于有序数组,我们寻找中间元素,将数组分为两段,每段再分别进行迭代;
1 | # Definition for a binary tree node. |
复杂度分析
- 时间复杂度:O(n),递归涉及到每一个元素。
- 空间复杂度:O(n)。