Convert Sorted Array to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public static TreeNode sortedArrayToBSTHelper(int[] num, int left,int right) {
        if (left>right) {
            return null;
        }
        if (left==right) {
            return new TreeNode(num[left]);
        }
        int mid = (left+right)/2;
        TreeNode leftNode = sortedArrayToBSTHelper(num, left, mid-1);
        TreeNode rightNode = sortedArrayToBSTHelper(num, mid+1, right);
        TreeNode node = new TreeNode(num[mid]);
        node.left = leftNode;
        node.right = rightNode;
        return node;
    }
    
    public TreeNode sortedArrayToBST(int[] num) {
        TreeNode result = sortedArrayToBSTHelper(num, 0, num.length-1);
        return result;
    }
}

 

posted @ 2014-01-06 11:40  23lalala  阅读(102)  评论(0编辑  收藏  举报