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

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

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

递归,分治
有序数组选中间点m作为root,recursiely build subtrees
m.left = build [l, m)
m.right = build [m+1, r)
public class Solution {
    public TreeNode sortedArrayToBST (int[] num) {
      if (num.length == 0) return null;
      return build(num, 0, num.length);
    }
  
    // build the BST for num[l:r)
    TreeNode build(int[] num, int l, int r) {
      if (l == r) return null;
      
      int m = l + ((r - l) >> 2);
      TreeNode n = new TreeNode(num[m]);
      n.left = build(num, l, m);
      n.right = build(num, m+1, r);
      
      return n;
    }
}
全部评论

相关推荐

02-27 15:08
门头沟学院 Java
春招第一枪拷打实习挑一个项目介绍一下手撕归并排序
滴滴滴d:我昨天也面了,感觉答得还行,结果秒挂
查看2道真题和解析
点赞 评论 收藏
分享
01-21 12:26
暨南大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务