題目:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
題意:
給一個排好序的數組,要求把數組轉化爲一個深度平均的搜索二叉樹。
對於二叉樹,父節點一定 大於左子節點,小於右子節點,所以對應數組而言,父節點應爲中間值,比它小的數放在左邊,大的數放在右邊,依次遞歸下去。
代碼如下:
public:
TreeNode * newBST(vector<int>nums, int l, int r) {
if (l > r) return NULL;
int mid = (l + r) / 2;
TreeNode * node = new TreeNode(nums[mid]);
node->left = newBST(nums, l, mid-1);
node->right = newBST(nums, mid+1, r);
return node;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
return newBST(nums, 0, nums.size()-1);
}
};