給你一個整數數組 nums ,其中元素已經按 升序 排列,請你將其轉換為一棵 平衡 二叉搜索樹。
平衡二叉樹:每個節點的左右子樹高度差不超過1
class Solution {
public:TreeNode* dfs(vector<int>& nums, int left, int right){if(left == right) return nullptr; // 遞歸出口int mid = (left + right)/2;TreeNode* node = new TreeNode(nums[mid]);node->left = dfs(nums, left, mid); // 創建左子樹,也是要找從中間節點開始建立node->right = dfs(nums, mid+1, right); // 創建右子樹return node;}TreeNode* sortedArrayToBST(vector<int>& nums) {return dfs(nums, 0, nums.size());}
};