当前位置: 首页 > news >正文

婚礼设计素材网站wordpress5.0.3

婚礼设计素材网站,wordpress5.0.3,镇江网站建设 的公司,做类似简书的网站前中后序遍历#xff08;DFS#xff09; 首先我们要明确前中后序遍历的顺序#xff1a; 前序#xff1a;中左右中序#xff1a;左中右后序#xff1a;左右中 前中后序遍历的递归代码和迭代代码分别有各自的框架#xff0c;然后根据遍历顺序调整记录元素的位置即可。 …前中后序遍历DFS 首先我们要明确前中后序遍历的顺序 前序中左右中序左中右后序左右中 前中后序遍历的递归代码和迭代代码分别有各自的框架然后根据遍历顺序调整记录元素的位置即可。 递归 class Solution { private:void postOrder(TreeNode* root, vectorint vec) {if (!root) return;postOrder(root-left, vec); // 1postOrder(root-right, vec);// 2vec.push_back(root-val); // 3} public:vectorint postorderTraversal(TreeNode* root) {vectorint res;postOrder(root, res);return res;} };前序遍历3-1-2中序遍历1-3-2后序遍历1-2-3 如前所述三种遍历的迭代方式很简单并且更改迭代方式只要调整记录元素的位置即可。 迭代 前序遍历 我们以前序遍历给出迭代版本的框架核心思想就是用栈。 class Solution { public:vectorint preorderTraversal(TreeNode* root) {vectorint res;stackTreeNode* S;TreeNode* node root;while (node || !S.empty()) {while (node) {res.push_back(node-val); // 注意S.push(node);node node-left;}node S.top(); S.pop();node node-right; }return res;} };中序遍历 与前序遍历的差别请看代码中的 注意调整了记录元素的位置。 class Solution { public:vectorint inorderTraversal(TreeNode* root) {if (!root) return {};vectorint res;stackTreeNode* S;TreeNode* curr root;while (curr || !S.empty()) {while (curr) {S.push(curr);curr curr-left;}TreeNode* node S.top();S.pop();res.push_back(node-val); // 注意curr node-right;}return res;} };后序遍历 注意到前序遍历的顺序为中左右而我们想要的后序遍历的顺序为左右中。我们可以先讲前序遍历代码中访问左右子树的顺序互换得到顺序为中右左再进行 reverse得到后序左右中。 class Solution { public:vectorint postorderTraversal(TreeNode* root) {if (!root) return {};vectorint res;stackTreeNode* S;S.push(root);while (!S.empty()) {TreeNode* node S.top();S.pop();res.push_back(node-val);if (node-left) S.push(node-left);if (node-right) S.push(node-right);}reverse(res.begin(), res.end());return res;} };层序遍历BFS 不需按深度划分 直接输出层序遍历序列不需按深度划分不同于 DFS 使用栈这里是用队。 class Solution { public:vectorint levelOrder(TreeNode* root) {if (!root) return {};queueTreeNode* Q;// vectorvectorint res;vectorint res;Q.push(root);while (!Q.empty()) {TreeNode* curr Q.front();res.push_back(curr-val);Q.pop();if(curr-left) Q.push(curr-left);if(curr-right) Q.push(curr-right);}return res;} }需要按深度划分 注意在不需要按深度划分的版本的基础上做些改变用 n 记录当前深度的节点的个数然后在 for 循环中将这 n 个节点保存到一个数组中下一层深度再用一个新数组保存从而达到按深度划分。 注意在本题的基础上修改可解决 LeetCode 中许多层序遍历的变种问题。 class Solution { public:vectorvectorint levelOrder(TreeNode* root) {if (!root) return {};vectorvectorint res;queueTreeNode* Q;Q.push(root);while (!Q.empty()) {vectorint vec;int n Q.size();for (int i0; in; i) {TreeNode* curr Q.front();Q.pop();vec.push_back(curr-val);if (curr-left) Q.push(curr-left);if (curr-right) Q.push(curr-right);}res.push_back(vec);}return res;} }Ref https://github.com/youngyangyang04/leetcode-master/blob/master/problems/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%AD%E4%BB%A3%E9%81%8D%E5%8E%86.md
http://www.zqtcl.cn/news/70069/

相关文章:

  • 教育培训网站建设在线设计平台的销售
  • 网站建设关键技术苏州有什么好玩的景点景区
  • 申请绿色网站建设网站的虚拟主机在哪里买
  • ico交易网站怎么做青岛seo
  • 关键词排名查询官网成品网站源码的优化技巧
  • 襄阳市作风建设年 网站2018做网站还是app
  • 百度不收录网站怎么办网站 多服务器
  • 江苏省建设注册中心网站兴城做网站推广的
  • 网上国网推广方案怎么写wordpress+优化速度
  • 网站设计与制作说明php高级网站开发
  • 建设网站学什么语言国内高校网站建设的调查
  • 西安做网站比较好的公司网站怎么做404 301
  • 长沙网站推广工具高端网站设计元素图片
  • 做壁纸网站的意义wordpress嵌入视频播放
  • 聊城网站推广的公司贵州城市和城乡建设官方网站
  • 哪里有网站建设工程计算机网络设计报告ensp
  • 做网站怎么返回首页投资网站开发
  • 极速网站建设哪家便宜合肥建设网站查询系统
  • 为什么企业网站不是开源系统建设一个网站的流程
  • 做网站哪家公司最好wordpress 页面是什么
  • 电子商务网站建设评价杭州网络
  • 百度平台商家app下载网站优化北京哪家强?
  • 建设网站最重要的是什么百度2019旧版本下载
  • 网站公司建设都招聘那些职位网站建设设计ppt
  • 果洛营销网站建设多少钱人力外包和劳务派遣哪个更好一些
  • 网站原则四川高速公路建设集团网站
  • 台州建设监理协会网站朝阳企业网站建设方案费用
  • 乐清网站建设阿里巴巴网站怎么做全屏大图
  • 移动网站营销企业为什么要培训
  • 建设北京公司网站医院门户网站建设方案