二叉树非递归遍历(C++版本)
来源:互联网 发布:ifconfig 修改mac 编辑:程序博客网 时间:2024/05/28 09:31
二叉树非递归遍历有三种方式:前序遍历、中序遍历、后续遍历
前序遍历
class Solution {public: vector<int> preorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode *> s; while (root || !s.empty()){ while (root){ s.push(root); res.push_back(root->val); root = root->left; } root = s.top(); s.pop(); root = root->right; } return res; }};
中序遍历
class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode *> s; while (root || !s.empty()){ while (root){ s.push(root); root = root->left; } root = s.top(); s.pop(); res.push_back(root->val); root = root->right; } return res; }};
后续遍历
class Solution {public: vector<int> postorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode *> s; TreeNode * lastNode = NULL, *topNode = NULL; while (root || !s.empty()){ while (root){ s.push(root); root = root->left; } topNode = s.top(); // topNode->right != lastNode 表示lastNode 这个节点下面的节点已经遍历过,没有必要再遍历了... if (topNode->right != NULL && topNode->right != lastNode){ root = topNode->right; } else{ res.push_back(topNode->val); lastNode = topNode; s.pop(); } } return res; }};
阅读全文
0 0
- 二叉树非递归遍历(C++版本)
- 【C++】非递归遍历二叉树
- 二叉树非递归遍历(C++)
- 二叉树遍历的递归与非递归版本
- 二叉树的前序中序后序遍历 - 递归&非递归版本
- 先中后序递归非递归遍历二叉树(c#)
- 二叉树的递归与非递归遍历源码(C++)
- 二叉树的递归,非递归遍历(C++)
- C语言二叉树的遍历,递归和非递归
- 【C++】二叉树遍历--递归与非递归实现
- 二叉树 前中后序遍历非递归版本 C++实现
- 二叉树遍历的非递归实现 java版本
- 二叉树非递归遍历实现-java版本
- 二叉树的建立,前中后序遍历的递归版本和非递归版本,层序遍历
- 非递归遍历二叉树
- 二叉树遍历非递归
- 非递归遍历二叉树
- 二叉树非递归遍历
- 欢迎使用CSDN-markdown编辑器
- Spring Boot对表单实体做REST API请求自动封装验证
- 敌兵布阵
- tomcat shutdown.sh不能完合关掉tomcat进程的解决方法
- C#中Winform绑定dategridview控件
- 二叉树非递归遍历(C++版本)
- 关注微信公众号:AI科技大本营 ,轻松赢取5积分
- 抓包简单分析英雄联盟的网络设计
- 本地视频播放器
- 使用jquery.more.js来实现点击底部更多后, 底部加载出新的数据
- Node如何处理模块之间的关系
- 错误: symbol lookup error: /usr/local/lib/libreadline.so.6: undefined&
- 数据库优化
- Java 全排列输出算法,执行效率对比