將有序數組轉換為二叉搜索樹
力扣題目鏈接
題目描述
給你一個整數數組 nums ,其中元素已經按 升序 排列,請你將其轉換為一棵 平衡 二叉搜索樹。
解題思路
很簡單的遇到遞歸題目,對數組取半,然后構建中間節點作為該數組對應的樹,然后左右兩邊切割數組遞歸下去。
題解
class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {if(nums.size() == 0){return nullptr;}if(nums.size() == 1){TreeNode* temp = new TreeNode(nums[0]);return temp;}int n = nums.size() / 2;vector<int> arr1(nums.begin(), nums.begin() + n);vector<int> arr2(nums.begin() + n + 1, nums.end());TreeNode* temp = new TreeNode(nums[n]);temp->left = sortedArrayToBST(arr1);temp->right = sortedArrayToBST(arr2);return temp;}
};