软件下载网站模板自做头像的网站
news/
2025/9/23 3:41:13/
文章来源:
软件下载网站模板,自做头像的网站,英文网站标题字体,网站建设如何定价654 最大二叉树
题目链接#xff1a;最大二叉树
思路
这道题目是让我们构造最大二叉树并返回根节点。谈及二叉树#xff0c;首先要确定遍历方式#xff0c;这道题目一个符合思维的遍历方式是前序遍历(中左右)#xff0c;先有中间节点#xff0c;然后递归构造左节点和右…654 最大二叉树
题目链接最大二叉树
思路
这道题目是让我们构造最大二叉树并返回根节点。谈及二叉树首先要确定遍历方式这道题目一个符合思维的遍历方式是前序遍历(中左右)先有中间节点然后递归构造左节点和右节点。
class Solution {
public:TreeNode* constructMaximumBinaryTree(vectorint nums) {TreeNode* node new TreeNode(0);if(nums.size() 1){node-val nums[0];return node;}// 找到数组中最大的值和对应的下标int maxValue 0;int maxValueIndex 0;for(int i0; inums.size(); i){if(nums[i] maxValue){maxValue nums[i];maxValueIndex i;}}node-val maxValue;if(maxValueIndex0){vectorint newVec(nums.begin(),nums.begin()maxValueIndex);node-left constructMaximumBinaryTree(newVec);}if(maxValueIndex (nums.size() - 1)){vectorint newVec(nums.begin() maxValueIndex 1, nums.end());node-right constructMaximumBinaryTree(newVec);}return node;}
};617 合并二叉树
题目链接合并二叉树
思路
这道题目简洁明了就是给你两个树都有的节点则相加一个有一个没有则替换。首先确定遍历顺序前序遍历符合思考逻辑。
class Solution {
public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if(root1 nullptr) return root2;if(root2 nullptr) return root1;TreeNode* root new TreeNode(0);root-val root1-val root2-val;root-left mergeTrees(root1-left, root2-left);root-right mergeTrees(root1-right, root2-right);return root;}
};700 二叉搜索树中的搜索
题目链接二叉搜索树中的搜索
思路
二叉搜索树本身就是一种有规则的树采用迭代法可以很简单地写出在其中搜索目标值。
class Solution {
public:TreeNode* searchBST(TreeNode* root, int val) {while(root ! nullptr){if(val root-val){root root-left;}else if(val root-val){root root-right;}else{return root;}}return nullptr;}
};当然用递归法也可以解决此问题采用前序遍历的方法。
class Solution {
public:TreeNode* searchBST(TreeNode* root, int val) {if(root nullptr || root-val val){return root;}TreeNode* res;if(val root-val){res searchBST(root-left, val);}if(val root-val){res searchBST(root-right, val);}return res;
}
};98 验证二叉搜索树
题目链接验证二叉搜索树
思路
先确定遍历顺序使用中序遍历的话输出就是一个有序的数组。再判断输出的数组是否是有序的即可。
class Solution {
public:vectorint vec;void traversal(TreeNode* root){if(root nullptr) return;traversal(root-left);vec.push_back(root-val);traversal(root-right);}bool isValidBST(TreeNode* root) {vec.clear();traversal(root);for(int i1; ivec.size();i){if(vec[i] vec[i-1]){return false;}}return true;}
};参考链接
https://programmercarl.com/0098.%E9%AA%8C%E8%AF%81%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html#%E6%80%9D%E8%B7%AF
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911261.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!