递归和非递归的方式实现二叉树的先序、中序和后序遍历
来源:互联网 发布:网面白鞋怎么清洗知乎 编辑:程序博客网 时间:2024/05/16 15:00
import java.util.Stack;/** * Created by lxw, liwei4939@126.com on 2017/10/30. * */public class PreOrder_InOrder_PosOrder { public class Node{ public int value; public Node left; public Node right; public Node(int data){ this.value = data; } } public void PreOrderRecur(Node head){ if(head == null){ return; } System.out.print(head.value + " "); PreOrderRecur(head.left); PreOrderRecur(head.right); } public void InOrderRecur(Node head){ if(head == null){ return; } InOrderRecur(head.left); System.out.print(head.value + " "); InOrderRecur(head.right); } public void PosOrderRecur(Node head){ if(head == null){ return; } PosOrderRecur(head.left); PosOrderRecur(head.right); System.out.print(head.value + " "); } public void PreOrderUnRecur(Node head){ if(head == null){ return; } Stack<Node> stack = new Stack<Node>(); stack.push(head); while (!stack.isEmpty()){ head = stack.pop(); System.out.print(head.value + " "); if(head.right != null){ stack.push(head.right); } if(head.left != null){ stack.push(head.left); } } System.out.println(); } public void InOrderUnRecur(Node head){ if(head == null){ return; } Stack<Node> stack = new Stack<Node>(); while (!stack.isEmpty() || head != null){ if(head != null){ stack.push(head); head = head.left; } else { head = stack.pop(); System.out.print(head.value + " "); head = head.right; } } System.out.println(); } public PosOrderUnRecur(Node head){ if(head == null){ return; } Stack<Node> stack1 = new Stack<Node>(); Stack<Node> stack2 = new Stack<Node>(); stack1.push(head); while (!stack1.isEmpty()){ head = stack1.pop(); stack2.push(head); if(head.left != null){ stack1.push(head.left); } if(head.right != null){ stack1.push(head.right); } } while (!stack2.isEmpty()){ System.out.print(stack2.pop().value + " "); } System.out.println(); } }
阅读全文
0 0
- 递归和非递归的方式实现二叉树的先序、中序和后序遍历
- 分别用递归和非递归方式实现二叉树的先序、中序和后序遍历
- 二叉树的先序、中序、后序遍历的递归和非递归实现
- 二叉树的先序、中序和后序遍历,递归与非递归方式实现。
- 二叉树的先序、中序、后序递归遍历和非递归遍历
- 二叉树的创建和先序,中序,后序,递归,非递归遍历
- 建立二叉树,实现二叉树的先序遍历、中序和后序遍历的非递归算法
- 二叉树的建树、遍历(先序、中序、后序、层次)(递归和非递归)--Java实现
- 二叉树的先序、中序、后续遍历的递归和非递归实现
- 二叉树的创建(先序创建的)及先序遍历 中序遍历 后序遍历的递归和非递归实现
- 二叉树的先序,中序,后序递归和非递归实现
- 二叉树的遍历 前序 中序 后序 分别实现递归和非递归遍历方式
- 二叉树的先序,中序和后序遍历的非递归算法
- 二叉树的非递归先序、中序和后序遍历
- 二叉树的先序遍历、中序遍历以及后序遍历(递归以及非递归方式)
- 二叉树的先序、中序和后序的非递归遍历(C语言实现)
- 二叉树的先序、中序、后序、层次遍历的递归和非递归解法
- C++实现链式二叉树,采用非递归的方式先序,中序,后序遍历二叉树
- 图像随机产生
- 树莓派3b使用一路继电器控制小风扇
- 我说设计模式
- 【NOIP2017提高A组集训10.28】序列操作
- 自己动手,写一个简单的线程池(3)
- 递归和非递归的方式实现二叉树的先序、中序和后序遍历
- 85. Maximal Rectangle
- Nginx服务器安装及配置文件详解
- Unity3D 热更新方案(集合各位专家的汇总)
- easydss与linux内核接收网络数据流程(二)
- 171029—函数自学【函数地址和函数指针】
- 15.4.3 转换流
- Codeforces 24D 期望DP 解题报告
- 零基础学图形学(2) 几何知识——点,向量,法向量