LeetCode刷题-108. 将有序数组转换为二叉搜索树
题目链接:108. 将有序数组转换为二叉搜索树
¶题解:
构造二叉搜索树问题!
¶题目简述:
将有序数组构造为高度平衡的二叉搜索树!
¶题解:
仍然从区间角度去考虑递归子问题来解决!
思路:
对于有序数组,二叉搜索树的根节点一定是区间的中心,即 l + r >> 1
- 根节点:
root = new TreeNode(nums[mid])
- 左子树区间:
l, mid - 1
- 右子树区间:
mid + 1, r
l > r
区间为空返回NULL
关于高度平衡即左右子树高度差小于一的证明:
很明显,和二分一样,高度一定是Log2 (n + 1)上取整的!
关于更加数学化的证明:参考 y 总证明!点击这里!
时间复杂度:每个节点遍历一次,为O(n)
¶AC代码:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小牛博客!
评论