题目:简单题

给定一个升序数组,转化为平衡二叉搜索树。 平衡:左右子树之差不大于1

思路:

本题的重点是平衡二字。所以可以以数组的中心为根节点,之后递归进行操作即可。

代码:

    /**
     * 
     * @param num int整型一维数组 
     * @return TreeNode类
     */
    public TreeNode sortedArrayToBST (int[] num) {
        // write code here
        return dp(num,0,num.length-1);
        
    }
    public TreeNode dp(int num[],int left,int right){
        if(left > right){
            return null;
        }
        int val=(left+right)/2;
        TreeNode root=new TreeNode(num[val]);
        root.left=dp(num,left,val-1);
        root.right=dp(num,val+1,right);
        return root;
    }
}