2014年10月5日星期日

[Leetcode] Convert Sorted Array to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
二叉树的中序遍历就是一个不递减的有序数组,因此按照中序遍历的逆过程来建立二叉树就可以了。
    public TreeNode sortedArrayToBST(int[] num) {
        int n = num.length;
        
        if(n == 0) return null;
        int mid = n / 2;
        int[] left = new int[mid];
        int[] right = new int[n-1-mid];
        for(int i = 0; i < mid; i++) left[i] = num[i];
        for(int i = 0; i < n-1-mid; i++) right[i] = num[i+mid+1];
        TreeNode root = new TreeNode(num[mid]);
        root.left = sortedArrayToBST(left);
        root.right = sortedArrayToBST(right);
        
        return root;
    }

没有评论:

发表评论