ACM-后序遍历(简单方法和正规方法)
1.后序遍历简单方法
/*
*二叉树遍历一般有三种方法:前序,中序,后序。
*其中前序遍历u顺序为:根->左子树->右子树,在此定义一种新的遍历方法:根->右子树->左子u树
*使用我们新定义的方法遍历二叉树之后,再用reverse()函数反转一下,便得到后序遍历序列!
*以下是具体实现代码:
*/
vector<int> postorderTraversal(TreeNode *root) {
vector<int> postorderTraversal; //后续遍历
if(root == nullptr)
return postorderTraversal;
stack<TreeNode *> tempStack;
tempStack.push(root);
while(tempStack.size() != ){
TreeNode *p = tempStack.top();
tempStack.pop();
postorderTraversal.push_back(p->val);
if(p->left != nullptr)
tempStack.push(p->left);
if(p->right != nullptr)
tempStack.push(p->right);
}
reverse(postorderTraversal.begin(),postorderTraversal.end());
return postorderTraversal;
}
2.后序遍历正规方法
/*
*非递归进行后序遍历
*利用栈的特性进行后序遍历,每个节点有三种情况:
* 1.此节点左右子树不是都为空,那么将此节点的右节点、左节点分别按照顺序入栈,先右后左的顺序保证了出栈时是先遍历左子树,再遍历右子树的
* 2.此节点左右子树都为空,则遍历此节点,并将此节点从栈中删除
* 3.上一次遍历的节点是此节点的左或右节点,那么此次应该遍历的节点就是此节点
*/
vector<int> postorderTraversal(TreeNode *root) {
vector<int>res; //后序遍历的序列
stack<TreeNode *>tempStack;
if(root == nullptr)
return res;
tempStack.push(root);
TreeNode *preNode = nullptr;
while(tempStack.size() != ){
TreeNode *current = tempStack.top(); //取出栈顶元素,不删除
if((current->left == nullptr && current->right == nullptr)
|| (preNode != nullptr && (preNode == current->left || preNode == current->right)))
{
res.push_back(current->val);
tempStack.pop();
preNode = current;
}
else{
if(current->right != nullptr)
tempStack.push(current->right);
if(current->left != nullptr)
tempStack.push(current->left);
}
}
return res;
}
ACM-后序遍历(简单方法和正规方法)的更多相关文章
- php循环方法实现先序、中序、后序遍历二叉树
二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree). <?php class Node { public $v ...
- ACM学习历程——UVA11234 Expressions(栈,队列,树的遍历,后序遍历,bfs)
Description Problem E: Expressions2007/2008 ACM International Collegiate Programming Contest Unive ...
- hihocoder 1049 后序遍历
#1049 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在参与过了美食节之后,小Hi和小Ho在别的地方又玩耍了一阵子,在这个过程中,小Ho得到了一个非常 ...
- 【二叉树遍历模版】前序遍历&&中序遍历&&后序遍历&&层次遍历&&Root->Right->Left遍历
[二叉树遍历模版]前序遍历 1.递归实现 test.cpp: 12345678910111213141516171819202122232425262728293031323334353637 ...
- 二叉树 Java 实现 前序遍历 中序遍历 后序遍历 层级遍历 获取叶节点 宽度 ,高度,队列实现二叉树遍历 求二叉树的最大距离
数据结构中一直对二叉树不是很了解,今天趁着这个时间整理一下 许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显 ...
- HihoCoder1049 后序遍历 分治水题
水题,是为了给难题(树形DP)做铺垫 描述 在参与过了美食节之后,小Hi和小Ho在别的地方又玩耍了一阵子,在这个过程中,小Ho得到了一个非常有意思的玩具——一棵由小球和木棍连接起来的二叉树! 小Ho对 ...
- Lintcode---二叉树的前序、中序、后序遍历
给出一棵二叉树,返回其节点值的后序遍历. 您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1] 思路:二叉树的后序遍历,简单 ...
- 小小c#算法题 - 11 - 二叉树的构造及先序遍历、中序遍历、后序遍历
在上一篇文章 小小c#算法题 - 10 - 求树的深度中,用到了树的数据结构,树型结构是一类重要的非线性数据结构,树是以分支关系定义的层次结构,是n(n>=0)个结点的有限集.但在那篇文章中,只 ...
- LeetCode:二叉树的前、中、后序遍历
描述: ------------------------------------------------------- 前序遍历: Given a binary tree, return the pr ...
随机推荐
- Linux系统学习 八、SSH服务—SSH远程管理服务
1.SSH简介 ssh(安全外壳协议)是Secure Shell的缩写,是建立在应用层和传输层基础上的安全协议.传输的时候是经过加密的,防止信息泄露,比telnet(明文传递)要安全很多. ftp安装 ...
- WPF button 图片显示
btn1.Background = new ImageBrush(new BitmapImage(new Uri(@"pack://application:,,,/Picture/PreSe ...
- JVM-9-调优工具
JDK的bin目录下有很多用于监视虚拟机和故障处理的工具,这些工具都非常稳定而且功能强大,能在处理应用程序性能问题.定位故障是发挥很大的作用.比较细心的读者可能会注意到这些工具的程序体积都异常小巧.并 ...
- faster-rcnn错误信息 : tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [21] rhs shape= [2]
faster-rcnn错误信息 : tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shap ...
- # Spring 练习ioc 、aop
Spring 练习 通过学习spring的基础知识,了解了Spring为了降低Java开发的复杂性,采取了以下4种关键策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: ...
- AtCoder Grand Contest 039
Preface 我发现我现在打AT真的是只会D-Before-- E,F都是抄曲明姐姐的,然后D还是几何画板猜结论做的(证明都是陈指导想的) 看来再这样下去就真的要退役了啊233 A - Connec ...
- saltstack--关于报错“UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 6: ordinal not in range(128)”
[root@linux-node1 桌面]# salt-key [ERROR ] 'ascii' codec can't decode byte 0xe6 in position 6: ordinal ...
- IT兄弟连 HTML5教程 HTML文档头部元素head
HTML头部标记是<head>,主要包括页面的一些基本描述语句,以及CSS和JavaScript,一般都可以定义在头部元素中.它用于包含当前文档的有关信息,例如网页标题和关键字等.通常位于 ...
- Linux进程和计划任务实践
1.显示统计占用系统内存最多的进程,并排序. 方法一 [root@test ~]#ps aux --sort=%mem USER PID %CPU %MEM VSZ RSS TTY STAT STAR ...
- DedeCMS V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221)
dedeCMS V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 一.漏洞描述 织梦内容管理系统(Dedecms)是一款PHP开源网站管理系统.Dedecms V5.7 SP2 ...