108. Convert Sorted Array to Binary Search Tree

Easy

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

Example:

Given the sorted array: [-10,-3,0,5,9],

One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:

      0
/ \
-3 9
/ /
-10 5
package leetcode.easy;

/**
* Definition for a binary tree node. public class TreeNode { int val; TreeNode
* left; TreeNode right; TreeNode(int x) { val = x; } }
*/
public class ConvertSortedArrayToBinarySearchTree {
public TreeNode sortedArrayToBST(int[] nums) {
if (0 == nums.length) {
return null;
}
TreeNode root = new TreeNode(nums[nums.length / 2]);
root.left = sortedArrayToBST(java.util.Arrays.copyOfRange(nums, 0, nums.length / 2));
root.right = sortedArrayToBST(java.util.Arrays.copyOfRange(nums, nums.length / 2 + 1, nums.length));
return root;
} private static void transLevel(TreeNode root) {
java.util.LinkedList<TreeNode> queue = new java.util.LinkedList<>();
if (null == root) {
return;
} else {
System.out.print(root.val + " ");
queue.offer(root);
while (!queue.isEmpty()) {
root = queue.pop();
if (root.left != null) {
System.out.print(root.left.val + " ");
queue.offer(root.left);
}
if (root.right != null) {
System.out.print(root.right.val + " ");
queue.offer(root.right);
}
} // end of the while
} // end of the if
} @org.junit.Test
public void test() {
int[] nums = { -10, -3, 0, 5, 9 };
TreeNode root = sortedArrayToBST(nums);
transLevel(root);
}
}

最新文章

  1. Excel 改变列表头显示方式, Excel显示列数字
  2. 【poj1019】 Number Sequence
  3. JS-计算器制作
  4. MSChart使用
  5. jquery初涉,First Blood
  6. secure CRT 介绍
  7. chage命令管理用户口令时效
  8. 数据库(批处理, 事务,CachedRawSetImpl类
  9. 浅谈JAVA中字符串常量的储存位置
  10. python基础(三)列表、数组、字典
  11. linux周期性计划任务 进程管理
  12. 比较集合List&lt;T&gt;集合,前后多了哪些数据,少了哪些数据Except
  13. sublime快捷键的使用
  14. Android开发中遇到的问题(一)——Android模拟器端口被占用问题的解决办法
  15. 适配ipad Pro
  16. yum 安装指定 kernel 版本源码
  17. Spring统一异常处理
  18. 32 Profiling Go Programs 分析go语言项目
  19. HTML标签 闭合还是不闭合?
  20. August 07th 2017 Week 32nd Monday

热门文章

  1. 操作socket笔记
  2. yum用法笔记
  3. 关于nginx的动静分离配置和分析
  4. Vue 获取dom元素中的自定义属性值
  5. sparkStreaming 读kafka的数据
  6. LOJ P10147 石子合并 题解
  7. Oracle数据库限定特定用户 特定IP 登录
  8. Greenplum 调优--数据倾斜排查(二)
  9. loj 2011
  10. 分治 FFT学习笔记