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

网站制作公司 重庆东莞做营销型网站的

网站制作公司 重庆,东莞做营销型网站的,查找企业信息的网站,怎么样开发app软件前中后序遍历#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.sadfv.cn/news/236076/

相关文章:

  • 怎么建设一个漫画网站中医网站源码
  • 苏州城乡和住房建设局网站首页怎么做钓qq密码网站
  • 静态网站设计模板宁夏固原建设网站
  • 四川省建设厅中心网站广州软件学院
  • net网站开发教学视频项目建设流程
  • 网站制作需要哪些免费注册的网站
  • 长沙律师网站建设上海网站制作官网
  • 个人网站建设简历网络营销论文范文
  • 个人备案的网站能做盈利吗如何制作网线
  • 外围网站代理怎么做秦皇岛黄金海岸潮汐表
  • 佛山外贸网站建设渠道评价一个网站设计的好坏
  • 注册网站域名平台做整装的网站
  • 烟台哪儿有可以做淘宝网站的苏州网站建设机构
  • 住建部网站村镇建设管理平台河南手机网站建设公司
  • 如何做自己网站平台电商设计的前景
  • 简述一个网站开发流程微盟集团
  • 网站做404好处网站哪家公司做的最好
  • 易语言如何做浏网站网站建设二级菜单
  • icp备案查询网站百度小说排行榜
  • 网站添加flash访问网站速度很慢
  • 网商之窗挂北京优化网站外包公司
  • 小程序网站制作公司广西水利电力建设集团网站
  • 网站建设要知道的东莞做网站费用
  • 西安市高新区建设局网站网站开发个人技能
  • 手机网站 o2o360建筑网官方网站
  • 网站变成手机网站上饶建设局网站
  • 大型网站后台登录地址一般是如何设置的企业展厅效果图
  • iis7发布静态网站西宁网络公司网站制作
  • 环保网站可以做哪些内容湖南3合1网站建设
  • 在线看视频网站怎么做云县网站建设 云县网