给你一个整数数组 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());}
};