【leetcode 145. 二叉树的后序遍历】解题报告
2024-08-28 12:15:15
方法一:递归
vector<int> res;
vector<int> postorderTraversal(TreeNode* root) {
if (!root) return res;
if (root->left) postorderTraversal(root->left);
if (root->right) postorderTraversal(root->right);
res.push_back(root->val);
return res;
}
方法二:非递归
vector<int> postorderTraversal(TreeNode* root) {
vector<int> res;
if (!root) return res;
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();
res.push_back(p->val);
r=p;
p=nullptr;
}
}
}
return res;
}
方法三:非递归
vector<int> postorderTraversal(TreeNode* root) {
vector<int> res;
if (!root) return res;
stack<TreeNode*> S;
TreeNode* p=root;
S.push(p);
while (!S.empty())
{
p=S.top();
S.pop();
if (p->left) S.push(p->left);
if (p->right) S.push(p->right);
res.insert(res.begin(),p->val);
}
return res;
}
最新文章
- Spark 资源池简介
- 【Storage】Ubuntu LVM 安装配置
- Java中构造函数执行顺序的问题
- php 图片等比缩放
- C#进阶之AOP
- MicroPython支持的开发板:高性能、低成本创客首选
- Programming In Scala笔记-第四章、类和对象
- Ueditor1.3.6 setContent的一个bug
- UVA - 11478 - Halum(二分+差分约束系统)
- vue2.0项目 calendar.js(日历组件封装)
- Java中常见的排序方式-选择排序(升序)
- flask中利用from来进行对修改修改时旧密码的验证
- 学习笔记之Supervised Learning with scikit-learn | DataCamp
- 【ArcGIS】Web AppBuilder For ArcGIS 配置使用
- Oracle 12c Windows安装、介绍及简单使用(图文)
- apache 服务器在ubuntu上图片无法显示解决
- ubuntu 常用命令集锦
- Linux命令-文件搜索命令:locate
- No module named _sqlite3
- 前端自动化工具 -- gulp https://angularjs.org/