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

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

示例:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

0
/
-3 9
/ /
-10 5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree

 1 public class ConvertSortedArrayToBinarySerachTree108 {
 2     static class TreeNode {
 3         int val;
 4         TreeNode left;
 5         TreeNode right;
 6         TreeNode(int x) {
 7             this.val  = x;
 8         }
 9     }
10     
11     public TreeNode sortedArrayToBST(int[] nums) {
12         return toBST(nums, 0, nums.length - 1);
13     } 
14     
15     public TreeNode toBST(int[] nums, int start, int end) {
16         if(start > end) { //相等的时候需要返回这一个节点,所以不能返回null
17             return null;
18         }
19         //或这当start == end时,直接返回节点
20 /*        if(start == end) {
21             return new TreeNode(nums[start]);
22         }*/
23         int mid = (start + end) / 2;
24         TreeNode root = new TreeNode(nums[mid]);
25         root.left = toBST(nums, start, mid - 1);
26         root.right = toBST(nums, mid + 1, end);
27         return root;
28     }
29 }
无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧
原文地址:https://www.cnblogs.com/xiyangchen/p/11144704.html