二叉树的遍历有几种(二叉树的前序遍历)
- 数据库
- 2023-08-13
- 95
大家好,感谢邀请,今天来为大家分享一下二叉树的遍历有几种的问题,以及和二叉树的前序遍历的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮...
大家好,感谢邀请,今天来为大家分享一下二叉树的遍历有几种的问题,以及和二叉树的前序遍历的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
顺序存储的二叉树是如何创建和遍历的
一、首先,简单介绍一下什么是“二叉树”
二叉树是n个结点的有限集合,它的定义具有递归性:
(1)当n=0时,为空树;
(2)当n=1时,只有一个结点,该节点称为根结点;
(3)当n>1时,除了根结点外的其他节点可分为互不相交的两个子集,称为左右子树,且左右子树本质上也都是二叉树。
图1二叉树
根据二叉树的结构和定义,可总结出二叉树的特点:
(1)非空二叉树的第i层最多有2∧(i-1)个结点;
(2)深度为k的二叉树最多有2∧k-1个结点
二叉树的存储结构二叉树是非线性的结构,其每个结点最多有一个“前驱”,但可以有多个“后继”。它可以采用顺序存储结构和链式存储结构。
1、顺序存储结构
二叉树的顺序存储,就是用一组连续的存储单元存放二叉树的结点。必须把二叉树的所有结点安排成一个恰当的序列结点在这个序列中的相互位置能反映出结点之间的逻辑关系。
要介绍顺序存储结构,首先要了解一个概念——完全二叉树。如果深度为k,有n个结点的二叉树,当k与n满足2∧(k-1)≦n≦2∧k-1时,该二叉树称为完全二叉树。
对于一个二叉树,如果其不是一个完全二叉树,则首先增添一些并不存在的空结点,使之称为一个完全二叉树的形式,然后按照从上到下、从左到右的顺序将树中的结点存储在数组中。
以图1为例,其补成完全二叉树如图2所示。
图2补完后的二叉树
其顺序存储状态为:
ABCDE∧H∧∧FGI显然,当一个非完全二叉树采用顺序存储结构时,由于需要增加许多空结点,因此会造成空间的大量浪费。
2、链式存储结构
二叉树的链式存储结构是指用链来表示二叉树结点之间的逻辑关系。
通常的方法是链表中的每个结点由3个域组成:
左指针域+数据域+右指针域即:Lchild+data+Rchild其中:data域存放结点的数据信息;Lchild和Rchild分别存放左、右支的指针,当某一支不存在时,相应的指针域为空(用符号∧国NULL表示)。如图1中的c结点,因其左支不存在,因此其Lchild的值为NULL。
三、二叉树的遍历算法二叉树常用的遍历方式有:前序遍历、中序遍历、后续遍历以及层序遍历。
1、前序遍历
先访问根结点,然后是左子树,最后是右子树。
图1的前序遍历结果为:
A->B->D->E->F->G->C->H->I
2、中序遍历
先访问左子树,然后是根结点,最后是右子树。
图1的中序遍历结果为:
D->B->F->E->G->A->C->I->H
3、后续遍历
先访问左子树,然后是右子树,最后是根结点。
图1的后续遍历结果为:
D->>F->G->E->I->H->B->C->A
4、层序遍历
从顶层的结点开始,从左向右依次遍历,之后转到第二层,继续从左向右遍历,……,直到所有的结点都遍历完成。
图1的层序遍历结果为:
A->B->C->D->E->H->F->G->I
中序遍历结果为abc的二叉树有几种
总共有3种。分别为左a中b右c
二叉树的遍历结果是唯一的吗
如果是同一棵二叉树,如果用相同的遍历方式,结果肯定唯一。但如果每次遍历方式不同,一会先序一会后序,结果可能就不同了。
c语言编程实现二叉树的三种遍历
二叉树有三种遍历方式,分别为先序遍历、中序遍历、后序遍历。
二叉树是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。
一棵二叉树的先序遍历
1、先序遍历第一个为树的根,先序遍历是先根再左子树最后右子树,第一个肯定是树的根,先画A,A再中序遍历中左右都有,说明A有左子树也有右子树。
2、然后看先序第一个值是B,在中序中为A的前面,所以B是A的左子树
3、继续看先序,接下来是C、D,C再中序中再B的前面,所以C是B的左子树,D在B后面,D是B的
4、接下来是E,E在中序是在D后面A前面,所以E是D的右子树
5、接着先序中是F,F在中序为A后面,是A的右子树
怎么遍历二叉树
遍历二叉树的方法
前序遍历:按照“根左右”,先遍历根节点,再遍历左子树,再遍历右子树
中序遍历:按照“左根右“,先遍历左子树,再遍历根节点,最后遍历右子树
后续遍历:按照“左右根”,先遍历左子树,再遍历右子树,最后遍历根节点其中前,后,中指的是每次遍历时候的根节点被遍历的顺序============
拓展资料
二叉树是一个相当重要的数据结构,它的应用面非常广,并且由他改进生成了很多重要的树类数据结构,如红黑树,堆等,应用价值之高后面深入学习便有体会,因此,掌握它的基本特征和遍历方式实现是学好后续数据结构的基础,理论方面其实我们看到二叉树的形状,我们自己画图都能总结出来,但是代码实现这一块,初学者不是很好理解,树的遍历利用了递归的思想,递归的思想本质无非就是循环,方法调方法,所以,理解二叉树遍历的代码实现最好的方式就是按照它的遍历思想自己画出图来一步一步的遍历一遍,先把这个遍历过程想明白了,然后再根据递归的思想,什么时候调什么样的方法,自然就能很容易想明白了
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
本文链接:http://www.xinin56.com/su/5068.html