版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tangyuanzong/article/details/85525565
链接:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
题目:将有序数组转换成BST
思路:对于当前区间,新建节点,节点值为数组当前区间中间的元素,然后后续遍历,递归构建
代码:
class Solution {
public:
TreeNode* order(vector<int>& nums,int l,int r){
int mid = (l + r) / 2;
TreeNode *root = new TreeNode (nums[mid]);
TreeNode *left = NULL;
TreeNode *right = NULL;
if(l <= mid-1) left = order(nums,l,mid-1);
if(r >= mid+1) right = order(nums,mid+1,r);
root->left = left;
root->right = right;
return root;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size()==0) return NULL;
return order(nums,0,nums.size()-1);
}
};