接前-后序遍历二叉树(非递归)
来源:互联网 发布:神圣罗马帝国历史 知乎 编辑:程序博客网 时间:2024/05/17 22:35
思路:
对于节点p可以分情况讨论
1. p如果是叶子节点,直接输出
2. p如果有孩子,且孩子没有被访问过,则按照右孩子,左孩子的顺序依次入栈
3. p如果有孩子,而且孩子都已经访问过,则访问p节点
实现方法:每次押入两个同样的节点入栈,则一次代表已访问,一次代表未访问
上代码:class Node { int data; Node left, right; Node(int item) { data = item; left = right = null; }}class BinaryTree { Node root; public List<Integer> iterativePostOrder() { List<Integer> res = new ArrayList<>(); if (root == null) { return res; } Node p = root; Stack<Node> sta = new Stack<>(); sta.push(p); sta.push(p); while (!sta.empty()) { p = sta.peek(); sta.pop(); if (!sta.isEmpty() && p == sta.peek()) { if (p.right != null) { sta.push(p.right); sta.push(p.right); } if (p.left != null) { sta.push(p.left); sta.push(p.left); } }else { res.add(p.data); } } return res; }}
阅读全文
0 0
- 接前-后序遍历二叉树(非递归)
- 二叉树的非递归前序、后序遍历
- 二叉树非递归前、中、后序遍历
- 二叉树非递归前、中、后序遍历实现
- 二叉树的非递归【前/中/后 序遍历】
- 非递归前,中,后序遍历二叉树
- 二叉树非递归遍历 (前,中,后) c
- 接前-中序遍历二叉树(非递归)
- 二叉树:前序,后序,中序遍历(递归+非递归);层次(队列)
- 二叉树的创建,遍历(前序,中序,后序)-递归 非递归
- 二叉树的前序、中序、后序(递归、非递归)遍历java实现
- 二叉树遍历(前序、中序、后序)递归与非递归
- 数据结构:二叉树的前序,中序,后序遍历(递归和非递归)
- 二叉树的递归和非递归遍历(前序、中序、后序)
- 二叉树的前序、中序、后序遍历(递归&非递归)
- 二叉树的前序、中序、后序遍历(递归与非递归)
- 二叉树的递归与非递归遍历(前序、中序、后序)
- 二叉树的递归与非递归遍历(前序、中序、后序)
- 对QT中connect函数的认识
- opencv 图像的膨胀和腐蚀(一)
- centos7.3+nginx1.8+php7.1+mysql5.7 安装(准备工作)
- csuoj1060: Nearest Sequence 动态规划
- fullPage.js
- 接前-后序遍历二叉树(非递归)
- 6月集训总结
- xshell远程时连接速度很慢的解决方法
- 关于css的优先级问题
- Java7并发编程指南——第八章:测试并发应用程序
- mysql 复制表
- Eclipse常用快捷键
- 关于安卓的界面设计
- 学习淘淘商城第九十六课(购物车实现分析及工程搭建)