力扣简108 将有序数组转化为二叉搜索树++
嘻嘻一次性就过了,而且内存和运行时间都不错。
期间有一个问题,对于只有一个结点的树,按原来写法不考虑会出现创左子树的时候越界行为,加了判断后更改好了。

package leetcode01; public class Solution108 { public static TreeNode sortedArrayToBST(int[] nums) { TreeNode root=new TreeNode(); int length=nums.length; int mid=length/2; root.val=nums[mid]; if(mid!=0&&mid==length-1) {//第一次写的时候这里没有加是否mid为0 的判断,没有想这种特殊情况,以后对于特殊情况应该自己验证一下。 root.val=nums[mid]; root.left=new TreeNode(nums[mid-1]); } else if(mid!=length-1) { int[] lnums=new int[mid]; int[] rnums=new int[length-1-mid]; for(int i=0;i<mid;i++) { lnums[i]=nums[i]; } for(int j=0,k=mid+1;j<length-1-mid;j++,k++) { rnums[j]=nums[k]; } root.left=sortedArrayToBST(lnums); root.right=sortedArrayToBST(rnums); } return root; } public static void main(String[] args) { // TODO Auto-generated method stub int[] nums= {-10,-3,0,5,9}; TreeNode res=sortedArrayToBST(nums); System.out.print(res); } }
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号