30 - 将有序数组转换为二叉搜索树
题目
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
示例:
给定有序数组: [-10,-3,0,5,9],
一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:
0 / -3 9 / / -10 5
解答
递归
既然已经有了顺序,那么可以从中间开始,左一个右一个地递归插入二叉树。
Runtime: 96 ms, faster than 7.29% of JavaScript online submissions forConvert Sorted Array to Binary Search Tree.
Memory Usage: 37.7 MB, less than 52.11% of JavaScript online submissions for Convert Sorted Array to Binary Search Tree.
主要是middle
不是通过设定的start
和end
来计算,而是直接通过长度除一下。因此也不需要额外送进去范围。
Runtime: 84 ms, faster than 16.19% of JavaScript online submissions for Convert Sorted Array to Binary Search Tree.
Memory Usage: 37.7 MB, less than 49.28% of JavaScript online submissions for Convert Sorted Array to Binary Search Tree.
迭代
有序数组,即意味着可以用二分法。
但是试了半天没有试出来。。。
Last updated
Was this helpful?