关于二叉搜索树的概念。

解法一:递归

保证树的高度最小的原则是构造一棵平衡二叉搜索树,原序列已经有序排列,每次取中值作为根结点,递归构造子树。

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public TreeNode sortedArrayToBST(int[] nums) {
  12. if (nums.length == 0) {
  13. return null;
  14. }
  15. int begin = 0;
  16. int end = nums.length;
  17. int mid = (begin + end) / 2;
  18. TreeNode root = new TreeNode(nums[mid]);
  19. if (mid - 1 >= 0) {
  20. root.left = sortedArrayToBST(Arrays.copyOfRange(nums, 0, mid));
  21. }
  22. if (mid + 1 < nums.length) {
  23. root.right = sortedArrayToBST(Arrays.copyOfRange(nums, mid + 1, nums.length));
  24. }
  25. return root;
  26. }
  27. }