二叉树前中后序遍历
来源:互联网 发布:现在什么软件翻墙好 编辑:程序博客网 时间:2024/06/10 08:43
Java实现二叉树的前序、中序、后续遍历。
一、定义二叉树的数据结构。
/** * Created by xdcoder on 17/4/17. */public class BinaryTree { public int value; public BinaryTree left;//左子树 public BinaryTree right;//右子树 public BinaryTree(int value){ this.value = value; this.left = null; this.right = null; }}
所谓三种不同的顺序:区别在于 根节点 遍历的时机不同,
**前序:根左右(根节点在最前面);
中序:左根右(根节点在中间)
后序:左右根(根节点在最后)**
二、前序遍历
遍历顺序:根->左->右
//前序遍历 public static void PreOrderTraverse(BinaryTree binaryTree){ if(binaryTree == null) return; //根 System.out.print(binaryTree.value + "\t"); //左 PreOrderTraverse(binaryTree.left); PreOrderTraverse(binaryTree.right); }
三、中序遍历
遍历顺序:左->根->右
//中序遍历 public static void InOrderTraverse(BinaryTree binaryTree){ if(binaryTree == null){ return; } InOrderTraverse(binaryTree.left); System.out.print(binaryTree.value + "\t"); InOrderTraverse(binaryTree.right); }
四、后序遍历
遍历顺序:左->右->根
//后续遍历 public static void PostOrderTraverse(BinaryTree binaryTree){ if(binaryTree == null) return; PostOrderTraverse(binaryTree.left); PostOrderTraverse(binaryTree.right); System.out.print(binaryTree.value + "\t"); }
五、例子
程序结果:
前序遍历
1 2 4 8 9 5 10 11 3 6 12 13 7 14 15
中序遍历
8 4 9 2 10 5 11 1 12 6 13 3 14 7 15
后序遍历
8 9 4 10 11 5 2 12 13 6 14 15 7 3 1
/** * Created by xdcoder on 17/4/17. */public class BinaryTree { public int value; public BinaryTree left;//左子树 public BinaryTree right;//右子树 public BinaryTree(int value){ this.value = value; this.left = null; this.right = null; }}
public class Main { public static void main(String[] args) {// System.out.println("Hello World!"); BinaryTree root = new BinaryTree(1); BinaryTree node2 = new BinaryTree(2); BinaryTree node3 = new BinaryTree(3); BinaryTree node4 = new BinaryTree(4); BinaryTree node5 = new BinaryTree(5); BinaryTree node6 = new BinaryTree(6); BinaryTree node7 = new BinaryTree(7); BinaryTree node8 = new BinaryTree(8); BinaryTree node9 = new BinaryTree(9); BinaryTree node10 = new BinaryTree(10); BinaryTree node11= new BinaryTree(11); BinaryTree node12 = new BinaryTree(12); BinaryTree node13 = new BinaryTree(13); BinaryTree node14 = new BinaryTree(14); BinaryTree node15 = new BinaryTree(15); root.left = node2; root.right = node3; node2.left = node4; node2.right = node5; node4.left = node8; node4.right = node9; node5.left = node10; node5.right = node11; node3.left = node6; node3.right = node7; node6.left = node12; node6.right = node13; node7.left = node14; node7.right = node15; System.out.println("前序遍历"); PreOrderTraverse(root); System.out.println("\n中序遍历"); InOrderTraverse(root); System.out.println("\n后序遍历"); PostOrderTraverse(root); } //前序遍历 public static void PreOrderTraverse(BinaryTree binaryTree){ if(binaryTree == null) return; //根 System.out.print(binaryTree.value + "\t"); //左 PreOrderTraverse(binaryTree.left); PreOrderTraverse(binaryTree.right); } //中序遍历 public static void InOrderTraverse(BinaryTree binaryTree){ if(binaryTree == null){ return; } InOrderTraverse(binaryTree.left); System.out.print(binaryTree.value + "\t"); InOrderTraverse(binaryTree.right); } //后续遍历 public static void PostOrderTraverse(BinaryTree binaryTree){ if(binaryTree == null) return; PostOrderTraverse(binaryTree.left); PostOrderTraverse(binaryTree.right); System.out.print(binaryTree.value + "\t"); }}
0 0
- 二叉树前中后序遍历
- 二叉树前中后序遍历
- Morris遍历求解二叉树前中后序遍历
- 二叉树前中后序遍历及其推导
- 二叉树前中后序遍历及其推导
- 二叉树前中后序遍历代码实现
- 二叉树前中后序遍历(递归)
- 二叉树前中后序遍历相互求法
- 算法题目-二叉树前中后序遍历
- 【数据结构】二叉树前中后序遍历、层序遍历(递归实现)
- 二叉树前中后序遍历非递归及应用
- 二叉树前中后序/递归/非递归遍历/求链表差集
- 二叉树遍历、分层遍历
- 遍历二叉树--二叉树
- 二叉树遍历
- 二叉树逐层遍历
- 二叉树遍历
- 二叉树的遍历
- 【转】为什么程序员话少钱多死得早?
- linux网络编程(12)——原始套接字编程
- redis默认配置文件解释
- 七牛删除存储空间中指定条件的文件
- MySQL常用的操作语句(2)
- 二叉树前中后序遍历
- python安装包提示error: option --single-version-externally-managed not recognized
- 使用Picasso和okhttp以及AsyncTask加载网络图片
- SuperMap iServer MongoDB版分布式切图配置和使用
- MFC List Control列表项内容在Edit中拖拽显示的实现
- Jinjia Template
- Leetcode 283. Move Zeroes
- DAY2——腾讯训练营
- xftp