LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)
2024-09-01 05:56:42
题目链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/
给定一个二叉树,返回它的 后序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [3,2,1]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
vector<int> result;
if(root==nullptr) return result;
stack<TreeNode*> s;
TreeNode *p=root,*r=nullptr;
while(p||!s.empty()){
if(p){
s.push(p);
p=p->left;
}else{
p=s.top();
if(p->right&&p->right!=r){
p=p->right;
}else{
s.pop();
result.push_back(p->val);
r=p;
p=nullptr;
}
// if(p->right==nullptr||p->right==r){
// s.pop();
// result.push_back(p->val);
// r=p;
// p=nullptr;
// }else{
// p=p->right;
// }
}
}
return result;
}
};
最新文章
- SqlServer--查询案例
- ASP.NET连接数据库时,提示“用户 &#39;sa&#39; 登录失败原因: 未与信任 SQL Server 连接相关联
- visual studio生成后调试启动又提示部分项目需要生成问题总结
- [转]jQuery.validate插件在失去焦点时执行验证代码
- [转载]MCU DSP ARM 嵌入式 之间的区别
- 动态时间规整(DTW) 转载
- xcode解决问题dyld: Library not loaded
- hdu1501 动态规划
- centos 安装ecshop出现date错误
- 【mysql】【分组】后取每组的top2
- Hadoop 中 Eclipse 的配置
- [IOS]本地化
- java_Eclipse自动生成作者、日期注释等功能设置_导入 xml方式
- 读取的XML节点中带有冒号怎么办?
- Android开发学习资源
- APPLE-SA-2019-3-25-5 iTunes 12.9.4 for Windows
- java内存问题排查及分析
- 突破内网限制上网(ssh+polipo)
- SpringMVC获取页面表单参数的几种方式
- Linux 机器的渗透测试命令备忘表