108. Convert Sorted Array to Binary Search Tree


1 題目

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

2 代碼


/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
		return sortedArrayToBST(nums, 0, nums.length - 1);
	}

	/**
	 * 將數組[start, end]轉化爲二叉樹
	 * 
	 * @param nums 數組
	 * @param start 開始索引(包含)
	 * @param end 結束索引(包含)
	 * @return
	 */
	public TreeNode sortedArrayToBST(int[] nums, int start, int end) {
		TreeNode treeNode = null;
		if (start > end) {
			return treeNode;
		}
		if (start == end) {
			return new TreeNode(nums[start]);
		}
		int median = start + end;
		if (median % 2 == 0) {// 2 3 4-->3做上級, 2做左節點,4做右節點
			median = median / 2;
		} else {// 2 3 4 5-->4做上級, 2 3做左節點,5做右節點
			median = median / 2 + 1;
		}

		treeNode = new TreeNode(nums[median]);
		treeNode.left = sortedArrayToBST(nums, start, median - 1);
		treeNode.right = sortedArrayToBST(nums, median + 1, end);

		return treeNode;
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章