Java二叉树的遍历思想及核心代码实现

所属分类: 软件编程 / java 阅读数: 39
收藏 0 赞 0 分享

二叉树在计算机中的存储方式往往线性结构,线性存储分为顺序存储和链式存储,将二叉树按层序编号。

顺序结构:按编号的顺序进行存储,对于完全二叉树而言,顺序存储可以反映二叉树的逻辑,但是对于大多数的二叉树则无法反映其逻辑关系,不过可以用 ^ 来代替不存在的结点,但是如果这个树是一个右斜树,就非常浪费存储空间。所以二叉树的存储形式一般为链式存储结构。

链式存储:每一个结点都分有一个数据域(data)和两个指针域(lchild和rchild),指针域分别指向左孩子和右孩子,若为空则为null。遍历方式有四种:前序遍历、中序遍历、后序遍历及层序遍历,前三种遍历方式采用递归的思想进行遍历。

为方便理解,画一个树并结合代码

前序遍历:若二叉树为空则返回null,否则先访问根节点然后遍历左子树,再遍历右子树,如图:ABDGHCEIF

代码如下:

void PreOrderTraverse(BiTree T) {
 if(T == NULL) /*为空返回*/
 return;
 printf("%c",T->data); /*输出该结点的信息*/
 PreOrderTraverse(T->lchild); /*遍历左子树*/
 PreOrderTraverse(T->rchild); /*遍历右子树*/
}

中序遍历:若二叉树为空则返回null,否则从根节点出发访问左子树,然后访问根结点,最后访问右子树,如图:GDHBAEICF

代码如下:

void InOrderTraverse(BiTree T) {
 if(T == NULL) /*为空返回*/
 return;
 InOrderTraverse(T->lchild); /*遍历左子树*/
 printf("%c",T->data); /*输出该结点的信息*/
 InOrderTraverse(T->rchild); /*遍历右子树*/
}

后序遍历:若二叉树为空则返回null,否则以先叶子后结点的方式进行访问最后到根结点遍历结束,如图:GHDBIEFCA

代码如下:

void PostOrderTraverse(BiTree T) {
 if(T == NULL) /*为空返回*/
 return;
 PostOrderTraverse(T->lchild); /*遍历左子树*/
 PostOrderTraverse(T->rchild); /*遍历右子树*/
 printf("%c",T->data); /*输出该结点的信息*/
}

层序遍历:若二叉树为空则返回null,否则从第一层开始进行访问,如图:ABCDEFGHI,按编号进行输出或操作即可

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

更多精彩内容其他人还在看

java实现背单词程序

这篇文章主要为大家详细介绍了java实现背单词程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java实现单词查询小程序

这篇文章主要为大家详细介绍了java实现单词查询小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java程序开发环境配置图文教程

这篇文章主要为大家详细介绍了Java程序开发环境配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解ssh框架原理及流程

在本文中小编给大家整理的是关于ssh框架原理及流程的相关知识点内容,有此需要的朋友们可以学习下。
收藏 0 赞 0 分享

Java实现弹窗效果的基本操作

这篇文章主要为大家详细介绍了Java实现弹窗效果的基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解springmvc常用5种注解

在本篇里我们给大家总结了关于springmvc常用5种注解相关知识点以及实例代码,需要的朋友们参考下。
收藏 0 赞 0 分享

Java实现弹窗效果的基本操作(2)

这篇文章主要为大家详细介绍了Java实现弹窗效果的基本操作第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Spring Boot假死诊断实战记录

这篇文章主要给大家介绍了关于Spring Boot假死诊断的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java计时新姿势StopWatch详解

这篇文章主要介绍了Java计时新姿势StopWatch,最近公司来了个大佬,从他那里学到不少东西,其中一个就是计时的新姿势「StopWatch」,需要的朋友可以参考下
收藏 0 赞 0 分享

java实现点击按钮弹出新窗体功能

这篇文章主要为大家详细介绍了java实现点击按钮弹出新窗体功能,旧窗体不进行操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多