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

发布时间:2019-11-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java二叉树的遍历思想及核心代码实现脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

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

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

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

代码如下:

void PreOrderTraverse(BiTree T) {  if(T == NULL) /*为空返回*/  return; 欢迎加入java中高端架构师交流群:603619042 面向1-5年java人员 帮助突破划水瓶颈,提升思维能力  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二叉树的遍历思想及核心代码实现所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。