[Java]java实现二叉树遍历
来源:互联网 发布:1390打印机清零软件 编辑:程序博客网 时间:2024/06/10 03:10
我们来用java构造一下下图中的二叉树,并实现该二叉树的前序、中序和后序遍历。
二叉树都是由节点组成的,所以我们首先要有个节点类。
TreeNode类代码:
public class TreeNode { private int num; private TreeNode leftChild = null; private TreeNode rightChild = null; public TreeNode(int num) { this.num = num; } public void printNode(){ System.out.println(this.getNum()); } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public void setLeftChild(TreeNode node) { this.leftChild = node; } public void setRightChild(TreeNode node) { this.rightChild = node; } public TreeNode getLeftChild() { return leftChild; } public TreeNode getRightChild() { return rightChild; }}
然后就可以构建二叉树了,每个二叉树的节点都有一个值,然后此节点又包含一个左子节点和一个右子节点。
BinaryTree类代码:
public class BinaryTree { private TreeNode root=null; public void createBinaryTree(){ root = new TreeNode(1); TreeNode node1 = new TreeNode(2); TreeNode node2 = new TreeNode(3); TreeNode node3 = new TreeNode(4); TreeNode node4 = new TreeNode(5); TreeNode node5 = new TreeNode(6); TreeNode node6 = new TreeNode(7); root.setLeftChild(node1); root.setRightChild(node2); node1.setLeftChild(node3); node1.setRightChild(node4); node2.setLeftChild(node5); node2.setRightChild(node6); } // 前序遍历 public void preOrder(TreeNode subTree){ if(subTree != null){ subTree.printNode(); preOrder(subTree.getLeftChild()); preOrder(subTree.getRightChild()); } } // 中序遍历 public void inOrder(TreeNode subTree){ if(subTree != null){ inOrder(subTree.getLeftChild()); subTree.printNode(); inOrder(subTree.getRightChild()); } } // 后序遍历 public void postOrder(TreeNode subTree){ if(subTree != null){ postOrder(subTree.getLeftChild()); postOrder(subTree.getRightChild()); subTree.printNode(); } } public TreeNode getRoot() { return this.root; }}
好了,可以再写个类测试一下遍历效果。
TestTree类代码:
public class TestTree { public static void main(String[] args) { BinaryTree bTree = new BinaryTree(); bTree.createBinaryTree(); // 前序遍历 System.out.println("--------前序遍历----------start"); bTree.preOrder(bTree.getRoot()); System.out.println("--------前序遍历----------end"); // 中序遍历 System.out.println("--------中序遍历----------start"); bTree.inOrder(bTree.getRoot()); System.out.println("--------中序遍历----------end"); // 后序遍历 System.out.println("--------后序遍历----------start"); bTree.postOrder(bTree.getRoot()); System.out.println("--------后序遍历----------end"); }}
输出结果如下:
——–前序遍历———-start
1
2
4
5
3
6
7
——–前序遍历———-end
——–中序遍历———-start
4
2
5
1
6
3
7
——–中序遍历———-end
——–后序遍历———-start
4
5
2
6
7
3
1
——–后序遍历———-end
阅读全文
0 0
- java实现 二叉树遍历
- [Java]java实现二叉树遍历
- Java实现二叉树遍历算法
- 用java实现二叉树遍历
- 二叉树的遍历(Java实现)
- Java实现二叉树的多种遍历
- 并发遍历二叉树 Java 实现
- java实现二叉树及遍历
- 二叉树的遍历Java实现_world
- Java实现二叉树的遍历
- java实现二叉树层次遍历
- 二叉树的遍历及其Java实现
- 二叉树的遍历2(java实现)
- 递归实现二叉树遍历JAVA
- java实现二叉树及遍历操作
- java实现二叉树的多种遍历
- 二叉树的遍历java实现
- java实现二叉树的遍历
- Java 泛型
- canvas画布
- cropper.js 剪切canvas 转base64
- 如何下载Spring官网的开发包(含下载链接)
- Linux centos 防火墙设置
- [Java]java实现二叉树遍历
- mysql The used table type doesn’t support FULLTEXT indexes 解决方案
- AndFix使用说明
- tabbar阴影效果
- BZOJ 2005 [Noi 2010] 数论 解题报告
- 【知识整理】Node.js-Sequelize之模型(表)之间的关联关系
- 导入excel表格数据 不用保存表格
- 关于angular安装npm install -g @angular/cli报错
- 关于DNF的多媒体包NPK文件的那些事儿(4)- NPK文件操作流程