青海省住建局和建设厅门户网站门户网站平台建设的经费
青海省住建局和建设厅门户网站,门户网站平台建设的经费,新网站建设的工作,好大夫在线个人网站王建设1--二叉树的层序遍历#xff08;102#xff09; 主要思路#xff1a; 经典广度优先搜索#xff0c;基于队列#xff1b; 对于本题需要将同一层的节点放在一个数组中#xff0c;因此遍历的时候需要用一个变量 nums 来记录当前层的节点数#xff0c;即 nums 等于队列元素的…1--二叉树的层序遍历102 主要思路 经典广度优先搜索基于队列 对于本题需要将同一层的节点放在一个数组中因此遍历的时候需要用一个变量 nums 来记录当前层的节点数即 nums 等于队列元素的数目 #include iostream
#include vector
#include queuestruct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};class Solution {
public:std::vectorstd::vectorint levelOrder(TreeNode* root) {std::vectorstd::vectorint res;if(root nullptr) return res;std::queueTreeNode* q;q.push(root);while(!q.empty()){int nums q.size(); // 当前层的节点数std::vectorint tmp;while(nums 0){ // 遍历处理同一层TreeNode *cur q.front();q.pop();tmp.push_back(cur-val);if(cur-left ! nullptr) q.push(cur-left);if(cur-right ! nullptr) q.push(cur-right);nums--;}res.push_back(tmp); // 记录当前层的元素}return res;}
};int main(int argc, char* argv[]){// root [1, null, 2, 3]TreeNode *Node1 new TreeNode(3);TreeNode *Node2 new TreeNode(9);TreeNode *Node3 new TreeNode(20);TreeNode *Node4 new TreeNode(15);TreeNode *Node5 new TreeNode(7);Node1-left Node2;Node1-right Node3;Node3-left Node4;Node3-right Node5;Solution S1;std::vectorstd::vectorint res S1.levelOrder(Node1);for(auto item : res) {for (int v : item) std::cout v ;std::cout std::endl;}return 0;
}
2--二叉树的最大深度 主要思路 递归计算左右子树的深度选取两者最大值 1 返回 #include iostream
#include vector
#include queuestruct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};class Solution {
public:int maxDepth(TreeNode* root) {if(root nullptr) return 0;int res dfs(root);return res;}int dfs(TreeNode* root){if(root nullptr) return 0;int left_height dfs(root-left);int right_height dfs(root-right);int cur_height std::max(left_height, right_height) 1;return cur_height;}
};int main(int argc, char* argv[]){// root [3,9,20,null,null,15,7]TreeNode *Node1 new TreeNode(3);TreeNode *Node2 new TreeNode(9);TreeNode *Node3 new TreeNode(20);TreeNode *Node4 new TreeNode(15);TreeNode *Node5 new TreeNode(7);Node1-left Node2;Node1-right Node3;Node3-left Node4;Node3-right Node5;Solution S1;int res S1.maxDepth(Node1);std::cout res std::endl;return 0;
}
3--从前序与中序遍历序列构造二叉树 主要思路
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87651.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!