树的三种遍历原理及实现
树的三种遍历
一棵树的三种遍历方式:先序遍历,中序遍历,后序遍历。
前中后三种顺序其实指的是根的顺序。
先序遍历:根节点、左子树、右子树
中序遍历:左子树、根节点、右子树
后序遍历:左子树、右子树、根节点
所以就是说先中后的顺序都是指根节点,除了根节点之外都是先左子树后右子树
举个例子:
遍历结果:
前序:FCADBEHGM
中序:ACBDFHEMG
后序:ABDCHMGEF
代码实现:
树结构构造代码:
/*** 树结构*/
public class MyTree {private MyNode root;public MyNode getRoot() {return root;}public void setRoot(MyNode root) {this.root = root;}
}
树结点的构造代码:
public class MyNode {// 左子节点private MyNode lNode;// 数据域private String data;// 右子节点private MyNode rNode;public MyNode(MyNode lNode, String data, MyNode rNode) {this.lNode = lNode;this.data = data;this.rNode = rNode;}public MyNode() {}public MyNode getlNode() {return lNode;}public void setlNode(MyNode lNode) {this.lNode = lNode;}public String getData() {return data;}public void setData(String data) {this.data = data;}public MyNode getrNode() {return rNode;}public void setrNode(MyNode rNode) {this.rNode = rNode;}
}
构造一个树结构:
public static void main(String[] args) {MyTree tree = new MyTree();MyNode cNode = new MyNode(null, "C", null);MyNode eNode = new MyNode(null, "E", null);MyNode fNode = new MyNode(null, "F", null);MyNode bNode = new MyNode(cNode, "B", null);MyNode dNode = new MyNode(eNode, "D", fNode);MyNode aNode = new MyNode(bNode, "A", dNode);tree.setRoot(aNode);}
树结构如下:
1. 前序遍历:先访问根结点,然后前序遍历左子树,再前序遍历右子树。
// 前序遍历private static void frontSort(MyNode node) {if (node == null) {return;}System.out.println(node.getData());// 遍历左子树frontSort(node.getlNode());// 遍历右子树frontSort(node.getrNode());}
2. 中序遍历:从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后访问根结点
// 中序遍历private static void middleSort(MyNode node) {if (node == null) {return;}// 遍历左子树middleSort(node.getlNode());System.out.println(node.getData());// 遍历右子树middleSort(node.getrNode());}
3. 后序遍历:从左到右先叶子后结点的方式遍历访问左右子树,最后访问根结点
// 后序遍历private static void postSort(MyNode node) {if (node == null) {return;}// 遍历左子树postSort(node.getlNode());// 遍历右子树postSort(node.getrNode());System.out.println(node.getData());}
树的三种遍历原理及实现相关推荐
- python 递归实现树的三种遍历
python 递归实现树的三种遍历 class TreeNode:def __init__(self,data):self.data = dataself.left = Noneself.right ...
- c语言二叉树的遍历菜单系统,C语言二叉树的三种遍历方式的实现及原理
C语言二叉树的三种遍历方式的实现及原理 发布时间:2020-10-03 19:43:57 来源:脚本之家 阅读:63 作者:看雪. 二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个 ...
- c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理
二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个名字?是根据根节点的顺序命名的. 比如上图正常的一个满节点,A:根节点.B:左节点.C:右节点,前序顺序是ABC(根节点排最先,然后 ...
- python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)
树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...
- C语言基本数据结构之二(二叉树的三种遍历,节点数以及深度算法)
关于二叉树的定义,网上有比较好的介绍,在这里就简单介绍二叉树的一些性质 二叉树的基本性质 1)二叉树的第i层上至多有 2^(i-1)(i ≥1)个结点: 2)深度为 h 的二叉树中至多含有 2^h – ...
- for-forEach-stream.forEach三种遍历方法
java8新出的循环方式,在网上有大量的道友说用流的方式效率反而更低了. 大量的结论表明,这种方式只是语法糖(for-forEach-stream三种遍历方法执行效率比较与选用思考 - ZZY1078 ...
- 二叉树的三种遍历(递归与非递归) + 层次遍历
<转载于 >>> > 二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的.二叉树有前.中.后三种遍历方式,因为树的本身就是用递归定义的,因此 ...
- 二叉树三种遍历方式的非递归实现
树的递归实现方式很简单,下面介绍三种遍历的非递归实现. 树的遍历有个特点,那就是在处理具体问题时,绝大多数情况下是在当前循环.或函数(或是子树)的根节点来处理的,能够注意到当前根节点是如何从上个根节点 ...
- 二叉树----数据结构:二叉树的三种遍历及习题
二叉树----数据结构:二叉树的三种遍历,利用递归算法. 关于二叉树的遍历,应用非常广泛,不单单是访问打印结点,还可以进行一系列的操作,如赋值.删除.查找.求二叉树的深度等等. 有递归和非递归两种算法 ...
最新文章
- iOS进阶之架构设计MVVM模式仿新闻项目(6)
- IntelliJ IDEA :Error:(1, 1) java: 非法字符: '\ufeff'
- 非华为手机可以鸿蒙,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可
!【手机吧】_百度贴吧...
- 雷林鹏分享:CSS 链接
- 获得最新纪录 sql
- Cachefiled
- 苹果4怎么越狱_苹果手机如何截屏
- mxnet入门--第4篇
- c语言指针详解pdf下载,C语言指针详解.pdf
- 21世纪最需要的7种人才
- Safari兼容IE
- 5S管理活动的实施和运行方案
- 邮件服务解决方案--iRedMail
- nginx 代理oss图片,带权限控制
- 从14连号概率题来看“做学问不知足”
- MySQL必知必会6
- 斑马打印机-中文打印
- 海康威视旗下萤石网络上市:首日跌12% 公司市值142亿
- 台式计算机找不到无线连接,我的win7台式机找不到无线网卡解决方法介绍
- Machine Learning Exercise 1.1