力扣简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);
    }

}

 

posted @ 2022-05-19 20:37  Ssshiny  阅读(23)  评论(0)    收藏  举报