public TreeNode sortedArrayToBST_helper(int[] num, int start, int end) {
		if (start > end)
			return null;
		// the mid will prevent overflow.
		int mid = (end + start) / 2;
		TreeNode root = new TreeNode(num[mid]);
		root.left = sortedArrayToBST_helper(num, start, mid - 1);
		root.right = sortedArrayToBST_helper(num, mid + 1, end);
		return root;
	}