题目描述
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。(本人注:本题中如果按照左叶子节点的值不大于根节点的值,右叶子节点的值不小于根节点的值的想法构造,遍历过程会相对简单。)
- 示例:
输入:给定有序数组: [-10,-3,0,5,9],
一个可能的输出:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
中序遍历,总是选择数组下标mid为(left+right)/2的值作为根节点的值,除法为整除。
因为每次都是如此选择,且如果采用普通的for或while循环难以确定终止条件,因此采用递归策略。
选何值为根节点的值会引出三种方法,这里仅以上述的选择方法进行代码详解。