题解 | #将升序数组转化为平衡二叉搜索树#

将升序数组转化为平衡二叉搜索树

http://www.nowcoder.com/practice/7e5b00f94b254da599a9472fe5ab283d

为了达到平衡树的特点:左右子树高度差不能超过1,也就是说左右子树的结点数量基本上一致(相差<1),那么就可以使用二分法的思想,将升序数组的中位数找到,然后分出左右2个区间分别作为左右子树,如此反复直到区间数为0即可。 因为需要遍历所有结点,所以时间复杂度O(N),空间复杂度O(N)。

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param num int整型一维数组 
     * @return TreeNode类
     */
    public TreeNode sortedArrayToBST (int[] num) {
        return generateTree(num, 0, num.length-1);
    }
    
    public TreeNode generateTree(int[] num, int left, int right){
        if(left > right){
            return null;
        }
        int mid = (left + right)/2;
        TreeNode tree = new TreeNode(num[mid]);
        tree.left = generateTree(num, left, mid-1);
        tree.right = generateTree(num, mid+1, right);
        return tree;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
06-01 21:50
已编辑
天津理工大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务