【LeetCode】Binary Tree Postorder Traversal(二叉树的后序遍历)
2024-08-30 04:07:16
这道题是LeetCode里的第145道题。
题目要求:
给定一个二叉树,返回它的 后序 遍历。
示例:
输入: [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) {
stack<TreeNode*>st;
TreeNode *cur,*pre=NULL;
vector<int>res;
if(root==NULL)
return res;
cur=root;
st.push(cur);
while(st.size()!=0){
cur=st.top();
if((cur->left==NULL&&cur->right==NULL)||
(pre!=NULL&&(pre==cur->left||pre==cur->right))
){
res.push_back(cur->val);
st.pop();
pre=cur;
}
else{
if(cur->right!=NULL)
st.push(cur->right);
if(cur->left!=NULL)
st.push(cur->left);
}
}
return res;
}
};
提交结果:
个人总结:
后序遍历迭代法比较难,同样还是先左后右,和前序遍历、中序遍历一起对照着学习进行总结会更好一点。
最新文章
- [ios基础]IOS应用程序的生命周期问题
- CGAL4.1在VS2010上配置
- 关于软件测试人员能力模型的建立(from知乎)
- js回调函数
- 11g RAC日志体系(cluster,database,asm,scan日志,ADRCI工具的使用)
- laravel加入验证码类几种方法 &;&; Laravel引入第三方库的方法
- PHP之XML节点追加操作讲解
- ID卡学习笔记
- windows网络编程(1)同步套接字
- C#使用ManagementObjectSearcher来获取系统信息时会有out of memory的异常
- day1-Python入门
- 微信小程序上手项目
- elment重置表格行高,hover效果
- termios结构体各成员的值(FreeBSD 12.0)
- AI将带我们走向何方?
- S.M.A.R.T.记录几块ssd硬盘
- Go Storm Is Coming!
- spring mvc 使用kaptcha配置生成验证码实例
- LintCode: Number of Airplanes in the Sky
- MongoDB(课时7 逻辑运算)