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.

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public TreeNode sortedArrayToBST(int[] num) {
		return transferHelper(num, 0, num.length);
    }
	
	/**construct tree node with the help of indices.<br>
	 * @param num --input array
	 * @param i --left index which is included.
	 * @param j --right index which is excluded
	 * @return root node of the tree
	 */
	private TreeNode transferHelper(int[] num, int i, int j){
		TreeNode root = null;
		if(j > i){
			if(j == i + 1)
				root = new TreeNode(num[i]);
			else{
				int mid = i + (j - i) / 2;
				root = new TreeNode(num[mid]);
				root.left = transferHelper(num, i, mid);
				root.right = transferHelper(num, mid + 1, j);
			}
		}
		return root;
	}
}

  

原文地址:https://www.cnblogs.com/averillzheng/p/3772354.html