博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树的非递归遍历
阅读量:2376 次
发布时间:2019-05-10

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

import java.util.Stack;public class PreOrder {    public static class Node {        public int value;        public Node left;        public Node right;        public Node(int value) {            this.value = value;        }    }    //前序遍历    public static void preOrder(Node node) {        Stack
stack = new Stack<>(); stack.push(node); while (!stack.isEmpty()) { node = stack.pop(); System.out.print(node.value + " "); if (node.right != null) { stack.push(node.right); } if (node.left != null) { stack.push(node.left); } } } //中序遍历 public static void inOrder(Node node) { Stack
stack = new Stack<>(); while (!stack.isEmpty() || node != null) { if (node != null) { stack.push(node); node = node.left; } else { node = stack.pop(); System.out.print(node.value + " "); node = node.right; } } } //后序遍历 public static void postOrder(Node node) { // 辅助栈,类似于前序遍历压入节点,最后反转即可 Stack
help = new Stack<>(); Stack
stack = new Stack<>(); stack.push(node); while (!stack.isEmpty()) { node = stack.pop(); help.push(node); //这里和前序遍历不同,先将左节点压入栈,再压右节点 if (node.left != null) { stack.push(node.left); } if (node.right != null) { stack.push(node.right); } } //将栈反转即得到后序遍历的结果 while (!help.isEmpty()) { System.out.print(help.pop().value + " "); } } public static void main(String[] args) { Node head = new Node(1); head.left = new Node(2); head.right = new Node(5); head.left.left = new Node(3); head.left.right = new Node(4); head.right.left = new Node(6); head.right.right = new Node(7);// preOrder(head);//1 2 3 4 5 6 7 inOrder(head);//3 2 4 1 6 5 7// postOrder(head);//3 4 2 6 7 5 1 }}

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

你可能感兴趣的文章
Java面试题——值传递和引用传递
查看>>
java面试题——构造函数
查看>>
Java面试题——变量
查看>>
Java面试题——内部类
查看>>
Java面试题——重写与重载
查看>>
Java面试题——为什么要有hashCode
查看>>
Java面试题——JDK中常用得包有哪些
查看>>
Java面试题——集合框架的底层数据结构
查看>>
Java面试题——面向对象和面向过程的区别
查看>>
Java面试题——局部内部类和匿名内部类在访问局部变量的时候,局部变量为什么要加上final关键字
查看>>
Java面试题——String类相关
查看>>
Spring面试题—Spring介绍
查看>>
Spring面试题——Spring应用程序有哪些不同的组件
查看>>
Mybatis面试题——mybatis简介
查看>>
SpringMVC中的处理器映射器(HandlerMapping)
查看>>
关于跨平台性的浅谈
查看>>
线程中的Thread类
查看>>
Runnable和Callable有什么区别
查看>>
Java多线程的start()方法和run()方法
查看>>
MySQL面试题——数据库基础知识
查看>>