二叉树的三种递归遍历实现

简单说说二叉树。
        那么我要说的二叉树是什么呢?它是一种数据结构,数据结构是什么可以自行百度一下,这里不讨论他。举一个现实中的例子:把某个家庭看作一棵树,这家的爸爸(妈妈)有两个孩子,那么
爸爸(妈妈) 就是树的,俩孩子就是这棵树的叶子,而此时这种,孩子只有唯一父辈(爸爸妈妈看作一个整体),父辈或者没有孩子,或者有且最多有两个孩子的树就叫做二叉树,可以参考下图
图片
就这样这个家族子子辈辈形成一个越来越高的二叉树。( 注意看它是倒过来的)
        那么这个时候故事来了:有一家的的家谱非常奇特,它从第一页开始,翻阅者每次只能看到家谱的一页,这一页上记录着一个人的信息和他两个孩子在哪一页的指示页码,通过指示页码可以找到这两个孩子的信息存放页。不知道你有没有想象出来这个家谱的样子。大概是下面这个样子:
图片 
后面还有很多很多这样的书页。。。
        然后有一个不知道是第几十辈孙子突发奇想,他想看看这本家谱上到底有多少先人,自己又是怎么来的。但是你知道在只有一个始祖页面的情况下,
一个不漏的找出所有人,会有多少种路径够你找,还不一定能找全。。。。看似很难的样子,该怎么办?
        然而,很巧的是这个孩子很勤奋,他学习过一种叫做二叉树的数据结构,还研究过它的遍历算法,直白点,就是把每一个点都访问一次。在这个21世纪互联网快速发展,计算机极度普及
的年代,他只写了一段代码就搞定了,同时还用了三种方法,这个孩子很厉害啊,后生可畏!!!
故事结束 
好了现在来看看二叉树的
三种 遍历算法(挺简单的,直接上代码) :
        因为根节点的左右子节点下面又是一棵二叉树,所以遍历就只考虑根、左、右三个节点的访问,访问就是看他在不在,即 if(p !=null),在,就输出他的信息,接着对左右子树使用相同的方法遍历即可。遍历没有返回值。(详见代码)
1.先序遍历
     保证每个节点访问一次
图片
2.中序遍历
图片
3.后序遍历
  图片
有么有很简单,5行搞定,相信你已经理解了。
那么还有一个问题,我用这段遍历代码去遍历谁?遍历二叉树啊!那么二叉树从何而来,这就涉及到二叉树的节点定义,和二叉树的创建了。好,一起来看一下:
4.定义二叉树的节点
首先二叉树每个节点得有一个存储信息的变量,其次它得有左右子树的指针指向,那么就是下面这样了
图片
5.二叉树的创建:
如果你理解了上面的先序遍历算法,那么创建也就很简单了,我们先输入一个字符,如果是空节点标志符,就相当于上一个插入的是根节点或是叶子节点了,这个节点就是空了,否则,插入这个信息,递归创建左右子树。看一下代码:
图片
上面的代码是我从控制台输入数据,测试的时候用的,如果你是文件输入或者其他方式,相应做修改就行。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值