108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode) (leetcode-cn.com)
有序数组转化为平衡二叉搜索树
递归
- 将数组按中点分治递归自然构造成平衡二叉搜索树
- 平衡来源于中点分治
- 搜索树来自于有序,利用的是二叉搜索树的性质,和递归体中遍历方式无关
class Solution {
public:
TreeNode* traversal(vector<int>& nums, int left, int right) {
// 递归边界
if (left > right) return nullptr;
// 递归体
int mid = left + (right - left) / 2;
TreeNode* root = new TreeNode(nums[mid]);
root->left = traversal(nums, left, mid - 1);
root->right = traversal(nums, mid + 1, right);
return root;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
return traversal(nums, 0, nums.size() - 1);
}
};