2023.7.16
由数组构造二叉搜索树地问题,本题可以借鉴从中序与后序遍历序列构造二叉树 这道题,这类题本质就是寻找分割点,分割点作为当前节点,然后递归左区间和右区间。文章来源:https://www.toymoban.com/news/detail-571498.html
下面直接看代码:文章来源地址https://www.toymoban.com/news/detail-571498.html
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
//中止条件
if(nums.size() == 0) return nullptr;
//分割点
int seg = nums.size()/2;
int rootvalue = nums[seg];
//构建根节点
TreeNode* root = new TreeNode(rootvalue);
//根据分割点 分割左右数组
vector<int> left_nums(nums.begin(),nums.begin()+seg);
vector<int> right_nums(nums.begin()+seg+1,nums.end());
//递归构造左右子树
root->left = sortedArrayToBST(left_nums);
root->right = sortedArrayToBST(right_nums);
return root;
}
};
到了这里,关于leetcode 108. 将有序数组转换为二叉搜索树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!