首页 > 编程语言 > 详细

108. 将有序数组转换为二叉搜索树

时间:2021-04-10 16:51:13      阅读:31      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 技术分享图片

 

 

 

二叉树的建立方式是不唯一的,因此这里我们不同的方法建立的二叉树也是不一致的

这里我用的方法是二分法取中间元素建立当前叶子节点

时间O(n)(每个元素都需要遍历一遍),空间O(logn)(本次建立的二叉树要保持平衡,所以树的高度固定为logn)

class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return def(0,nums.length-1,nums);
    }

    public TreeNode def(int left,int right,int[] nums){
        // 递归结束条件
        if (left>right) return null;
        int mid = (left+right)/2;
        TreeNode temp = new TreeNode(nums[mid]);
        temp.left=def(left,mid-1,nums);
        temp.right=def(mid+1,right,nums);
        return temp;
    }
}

 

108. 将有序数组转换为二叉搜索树

原文:https://www.cnblogs.com/jchen104/p/14640861.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!