李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
数据结构和算法学习--二叉树遍历应用实例(前序,中序,后序)
Leefs
2020-02-08 PM
1944℃
0条
# 数据结构和算法学习--二叉树遍历应用实例(前序,中序,后序) ### **应用实例和说明和思路** ![28.二叉树遍历01.png][1] **分析二叉树的前序,中序,后续的遍历步骤** > 1. 1.创建一颗二叉树 > > 2. 2.前序遍历 > > 2.1 先输出当前节点(初始的时候是root节点) > > 2.2 如果左子节点不为空,则递归继续前序遍历 > > 2.3 如果右子节点不为空,则递归继续前序遍历 > > 3. 3.中序遍历 > > 3.1 如果当前节点的左子节点不为空,则递归中序遍历 > > 3.2 输出当前节点 > > 3.3 如果当前节点的右子节点不为空,则递归中序遍历 > > 4. 4.后序遍历 > > 4.1 如果当前节点的左子节点不为空 ,则递归后序遍历 > > 4.2 如果当前节点的右子节点不为空,则递归后序遍历 > > 4.3 输出当前节点 **代码实现** ```java public class BinaryTreeDemo { public static void main(String[] args) { //先需要创建一颗二叉树 BinaryTree binaryTree = new BinaryTree(); //创建需要的节点 HeroNode root = new HeroNode(1,"宋江"); HeroNode node2=new HeroNode(2,"吴用"); HeroNode node3=new HeroNode(3,"卢俊义"); HeroNode node4=new HeroNode(4,"林冲"); HeroNode node5=new HeroNode(5,"关胜"); //说明,我们先手动创建该二叉树,后面我们学习递归的方式创建二叉树 root.setLeft(node2); root.setRight(node3); node3.setRight(node4); node3.setLeft(node5); binaryTree.setRoot(root); //测试 System.out.println("前序遍历"); binaryTree.preOrder(); System.out.println("中序遍历"); binaryTree.infixOrder(); System.out.println("后序遍历"); binaryTree.postOrder(); } } class BinaryTree{ private HeroNode root; public void setRoot(HeroNode root){ this.root=root; } //前序遍历 public void preOrder(){ if(this.root != null){ this.root.preOrder(); }else{ System.out.println("二叉树为空,无法遍历"); } } //中序遍历 public void infixOrder(){ if(this.root != null){ this.root.infixOrder(); }else{ System.out.println("二叉树为空,无法遍历"); } } //后序遍历 public void postOrder(){ if(this.root != null){ this.root.postOrder(); }else{ System.out.println("二叉树为空,无法遍历"); } } } //先创建HeroNode结点 class HeroNode{ private int no; private String name; private HeroNode left;//默认null private HeroNode right;//默认null public HeroNode(int no,String name){ this.no=no; this.name=name; } public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public HeroNode getLeft() { return left; } public void setLeft(HeroNode left) { this.left = left; } public HeroNode getRight() { return right; } public void setRight(HeroNode right) { this.right = right; } @Override public String toString() { return "HeroNode{" + "no=" + no + ", name='" + name + '\'' + '}'; } //编写前序遍历的方法 public void preOrder(){ System.out.println(this);//先输出父节点 //递归向左子树前序遍历 if(this.left!=null){ this.left.preOrder(); } //递归向右子树前序遍历 if(this.right != null){ this.right.preOrder(); } } //中序遍历 public void infixOrder(){ //递归向左子树中序遍历 if(this.left != null){ this.left.infixOrder(); } //输出父结点 System.out.println(this); //递归向右子树中序遍历 if(this.right != null){ this.right.infixOrder(); } } //后序遍历 public void postOrder(){ if(this.left != null){ this.left.postOrder(); } if(this.right != null){ this.right.postOrder(); } System.out.println(this); } } ``` [1]: https://lilinchao.com/usr/uploads/2020/02/2528599778.png
标签:
数据结构和算法
,
二叉树
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/576.html
上一篇
数据结构和算法学习--树结构的基础部分
下一篇
数据结构和算法学习--二叉树删除节点
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
Nacos
Yarn
SpringCloudAlibaba
Tomcat
数据结构
Netty
Golang基础
JavaWEB项目搭建
Shiro
LeetCode刷题
MySQL
Map
Stream流
SQL练习题
Spark Core
并发编程
工具
前端
Jquery
持有对象
随笔
RSA加解密
HDFS
队列
递归
数据结构和算法
VUE
Elastisearch
线程池
Hive
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞