后续遍历二叉树
来源:互联网 发布:开淘宝店的技巧 编辑:程序博客网 时间:2024/04/29 06:19
后续遍历二叉树,递归实现二叉树后续遍历,先递归左孩子节点,然后递归右孩子节点,最后输出节点值。非递归实现二叉树后续遍历,需要借助两个栈。
非递归实现二叉树后续遍历,需要借助两个栈来实现
第一个栈按前序遍历将二叉树节点压栈
第二个栈是当第一个栈要出栈的时候,将当前出栈的节点压栈到第二个栈
如果当前节点存在左孩子节点,则压栈到第一个栈
如果当前节点存在右孩子节点,则压栈到第一个栈
最后当第一个栈为空的时候,这时候遍历第二个栈,让第二个栈一直出栈并且输出当前节点值
实现过程如下所示:
package cn.edu.nwu.tree;import java.util.Stack;/** * @author jcm * *时间 2016年9月15日 */public class GetTreeNodePostTraver {public static void main(String[] args) {TreeNode root = CreateBinaryTree.createTreeNode();System.out.println("递归实现二叉树后续遍历");postOrderRecursion(root);System.out.println();System.out.println("非递归实现二叉树后续遍历");postOrder(root);}/** * @author jcm * 递归实现二叉树的后续遍历 * (1)如果二叉树为空,空操作 * (2)如果二叉树不为空,访问根节点,后续遍历左子树,后续遍历右子树 * @param root */private static void postOrderRecursion(TreeNode root) {if(root == null){return;}postOrderRecursion(root.leftChild);postOrderRecursion(root.rightRight);System.out.print(root.data+" ");}/** * @author jcm * 非递归实现二叉树后续遍历,需要借助两个栈来实现 * 第一个栈按前序遍历将二叉树节点压栈 * 第二个栈是当第一个栈要出栈的时候,将当前出栈的节点压栈到第二个栈 * 如果当前节点存在左孩子节点,则压栈到第一个栈 * 如果当前节点存在右孩子节点,则压栈到第一个栈 * 最后当第一个栈为空的时候,这时候遍历第二个栈,让第二个栈一直出栈并且输出当前节点值 * @param root */private static void postOrder(TreeNode root) {if(root == null){return;}//第一个栈stack存放先序遍历二叉树节点Stack<TreeNode> stack = new Stack<TreeNode>();//第二个栈用来存放翻转第一个栈的输出Stack<TreeNode> outPut = new Stack<TreeNode>();stack.push(root);while(!stack.isEmpty()){TreeNode current = stack.pop();outPut.push(current);if(current.leftChild != null){stack.push(current.leftChild);}if(current.rightRight != null){stack.push(current.rightRight);}}//遍历第二个栈,其实质为后续遍历while(!outPut.isEmpty()){TreeNode printTreeNode = outPut.pop();System.out.print(printTreeNode.data+" ");}}}
0 0
- 二叉树后续遍历
- 后续遍历二叉树
- 二叉树后续遍历算法
- 二叉树的后续遍历
- 【二叉树】后续遍历二叉树
- 二叉搜索树的后续遍历序列
- 二叉树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 判断二叉树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 搜索二叉树的后续遍历序列
- 二叉树后续非递归遍历-lintcode
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历
- 二叉搜索树的后续遍历
- 二叉搜索树的后续遍历序列
- POJ 1185 炮兵阵地 三维DP *
- 24.Linux:嵌入式sqlite3数据库事务理解以及实例操作 (转载)
- VS2015使用小技巧 生成解决方案的快键键F6
- Hibernate的fetch (转)
- web前端工程师必备知识:TCP/IP
- 后续遍历二叉树
- 观战Retrofit开发中的哪点事
- 2016/09/15 21:16
- 第九章 在ARM7上移植μC/OS-Ⅱ
- 实时操作系统μC/OS-Ⅱ读书笔记(4)
- 网易2017校园招聘笔试题:计算糖果
- Solution of 1118. Birds in Forest (25)
- 梦的解析 —— 梦知道答案
- chrome 插件开发 之 ip地址显示