博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
145. 二叉树的后序遍历
阅读量:4028 次
发布时间:2019-05-24

本文共 1067 字,大约阅读时间需要 3 分钟。

给定一个二叉树,返回它的 后序 遍历。

示例:

输入: [1,null,2,3]     1    \     2    /   3 输出: [3,2,1]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

方法1:递归

class Solution {public:    void dfs(TreeNode* root, vector
&re){ if(!root) return; dfs(root->left, re); dfs(root->right, re); re.push_back(root->val); } vector
postorderTraversal(TreeNode* root) { vector
re; dfs(root, re); return re; }};

方法2:非递归方法,需要用栈来做:

(1)从根节点开始,先将根节点压入栈,然后再将其所有右子结点全部压入栈,同时取出保存这些节点值。

(2)然后分别取出栈顶节点。

(3)若栈顶节点存在左子节点,将当前指针移到其左子节点上,即跳到(1)。

这样就保证了访问顺序为根-右-左,然后reverse一下,即是左-右-根。

class Solution {public:    vector
postorderTraversal(TreeNode* root) { vector
re; stack
s; while(root || !s.empty()){ while(root){ s.push(root); re.push_back(root->val); root=root->right; } TreeNode *temp=s.top(); s.pop(); root=temp->left; } reverse(re.begin(), re.end()); return re; }};

 

转载地址:http://hqabi.baihongyu.com/

你可能感兴趣的文章
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
jQuery性能优化指南
查看>>
Oracle 物化视图
查看>>
PHP那点小事--三元运算符
查看>>
解决国内NPM安装依赖速度慢问题
查看>>
Brackets安装及常用插件安装
查看>>
在CentOS 7系统上搭建LNMP 环境
查看>>
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
一个ahk小函数, 实现版本号的比较
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
深度学习库安装与使用
查看>>