二叉树的遍历(循环及递归实现)——Java
来源:互联网 发布:海外淘宝怎么用 编辑:程序博客网 时间:2024/06/17 00:24
package go.jacob.day502;import java.util.Stack;/** * * @author Administrator 前序遍历:6 3 1 2 5 4 9 7 8 中序遍历:1 2 3 4 5 6 7 8 9 后序遍历:2 1 * 4 5 3 8 7 9 6 */public class Demo3 {public static void main(String[] args) {Node root = init();System.out.println("|-----递归------|");System.out.print("前序遍历:");preOrderTraversal_rec(root);System.out.println();System.out.print("中序遍历:");inOrderTraversal_rec(root);System.out.println();System.out.print("后序遍历:");postOrderTraversal_rec(root);System.out.println();System.out.println("|-----循环------|");preOrderTraversal_cir(root);inOrderTraversal_cir(root);postOrderTraversal_cir(root);}/* * 递归实现:前序遍历 */private static void preOrderTraversal_rec(Node root) {if (root == null)return;System.out.print(root.val + " ");preOrderTraversal_rec(root.left);preOrderTraversal_rec(root.right);}/* * 递归实现:中序遍历 */private static void inOrderTraversal_rec(Node root) {if (root == null)return;inOrderTraversal_rec(root.left);System.out.print(root.val + " ");inOrderTraversal_rec(root.right);}/* * 递归实现:后续遍历 */private static void postOrderTraversal_rec(Node root) {if (root == null)return;postOrderTraversal_rec(root.left);postOrderTraversal_rec(root.right);System.out.print(root.val + " ");}/* * 循环实现:前序遍历 */private static void preOrderTraversal_cir(Node root) {if (root == null) {System.out.println("树为空");return;}Stack<Node> stack = new Stack<Node>();System.out.print("先序遍历:");while (root != null || !stack.isEmpty()) {if (root != null) {stack.push(root);System.out.print(root.val + " ");root = root.left;} else {root = stack.pop();root = root.right;}}System.out.println();}/* * 循环实现:中序遍历 */private static void inOrderTraversal_cir(Node root) {if (root == null) {System.out.println("树为空");return;}Stack<Node> stack = new Stack<Node>();System.out.print("中序遍历:");while (root != null || !stack.isEmpty()) {if (root != null) {stack.push(root);root = root.left;} else {root = stack.pop();System.out.print(root.val + " ");root = root.right;}}System.out.println();}/* * 循环实现:后续遍历 */private static void postOrderTraversal_cir(Node root) {if (root == null) {System.out.println("树为空");return;}System.out.print("后序遍历:");Stack<Node> stack = new Stack<Node>();Stack<Node> output = new Stack<Node>();while (root != null || !stack.isEmpty()) {if (root != null) {stack.push(root);output.push(root);root=root.right;}else{root=stack.pop();root=root.left;}}while(!output.isEmpty()){System.out.print(output.pop().val+" ");}System.out.println();}private static Node init() {Node J = new Node(8, null, null);Node H = new Node(4, null, null);Node G = new Node(2, null, null);Node F = new Node(7, null, J);Node E = new Node(5, H, null);Node D = new Node(1, null, G);Node C = new Node(9, F, null);Node B = new Node(3, D, E);Node A = new Node(6, B, C);return A; // 返回根节点}}class Node {int val = 0;Node left = null;Node right = null;public Node(int val, Node left, Node right) {this.val = val;this.left = left;this.right = right;}}
0 0
- 二叉树的遍历(循环及递归实现)——Java
- 二叉树(一)——二叉树的构造及三种遍历算法的递归实现(java版)
- Java实现二叉树的递归构建及先序、中序、后序、层序遍历(递归和循环)
- 二叉树的非递归遍历——java实现
- JAVA实现二叉树及递归遍历二叉树
- 二叉树的递归遍历----java实现
- 二叉树后续遍历的非递归循环C# 实现
- C++二叉树遍历递归与栈循环的实现
- 二叉树的递归实现及递归遍历
- 二叉树三种遍历(递归及非递归)的实现
- JAVA语言实现二叉树的层次遍历的非递归算法及递归算法。
- JAVA语言实现二叉树的层次遍历的非递归算法及递归算法
- 二叉树的递归、非递归及层序遍历的Java实现
- Java方式实现二叉树的前中后序遍历的递归及非递归算法
- 二叉树(二)——三种遍历算法的非递归实现(java版)
- JAVA下实现二叉树的先序、中序、后序、层序遍历(递归和循环)
- JAVA下实现二叉树的先序、中序、后序、层序遍历(递归和循环)
- 算法:二叉树的先序遍历、中序遍历、后序遍历(递归及非递归方式)的java代码实现
- 计算机系统与网络
- poj 1386 Play on Words
- Redis安装 centos 6.5
- 互联网全站HTTPS的时代已经到来
- Mybatis--快速入门
- 二叉树的遍历(循环及递归实现)——Java
- 08-图9 关键活动 (30分)
- 解决VS在该应用程序上不能更新许可证的问题
- SqlServer开启CLR使用(C#)DLL实现实时Socket通知
- [整理]JavaScript跨域解决方法大全
- Springboot 配置shiro 遇到的坑,记录
- 提高网站访问速度34条军规
- 推荐几款实用的Android Studio 插件
- http 请求 超时时间设置