树与二叉树

二叉树的定义及其主要特征:1.二叉树的定义,二叉树是一种树形结构,其特点是每个结点至多只有两颗子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分 ,其次序不能任意颠倒。
与树相似,二叉树也以递归的形式定义。二叉树是n个结点的有限集合:1.或者为空二叉树,即n=0.2.或者由一个根结点和两个互不相交的被称为左子树和右子树组成。左子树和右子树又分别是一颗二叉树。    二叉树 是有序树,若将其左,右子树颠倒,就成为另一颗不同的二叉树。即使树中结点只有一颗子树,也要区分它是左子树还是右子树。二叉树的5种形态如图所示。
二叉树与度为2的有序树的区别;
1.度为2的树至少有三个结点,而二叉树可以为空。
2.度为2的有序树的孩子结点的左右次序是相对于另一孩子结点而言的,如果某个结点只有一个孩子结点,这个孩子结点就无须区分其左右次序,而而二叉树无论孩子数是否为2,均无需确定其左右次序,也就是说二叉树的结点次序不是相对于另一结点而言,二是确定的。
几个特殊的二叉树:
1.满二叉树:一颗高度为h,并且含有。。个结点的二叉树称为满二叉树,即树中的每一层都含有最多的结点,如图所示。满二叉树的叶子结点都集中在二叉树的最下一层,并且除叶子结点之外的每个结点度数均为2.
可以对满二叉树按层序编号,约定编号从根结点起,自上而下,自左向右,这样每个结点对应的一个编号,对于编号为i的结点起,自上而下,自左向右。这样每一个结点都对应一个编号,对于编号为i的结点,如果有双亲,其双亲为i/2,如果有左孩子,则左孩子为2i,如果有右孩子,则右孩子为2i+1.
完全二叉树,设一个高度为h,有n个结点的二叉树,当且仅当其每一个结点都与高度为h的满二叉树中编号为1-n的结点,称为完全二叉树,这种树的特点如下:1.若i<=n/2,则结点为分支结点,否则为叶子结点。2.叶子结点只可能在层次最大的两层上出现,对于最大层次中的叶子结点,都依次排序在该层最左边的位置上。3.如果有度为1的结点,只可能有一个,且该结点只有左孩子而无右孩子。4.按层序编号后,一旦出现某个结点为叶子结点或者只有左孩子二无右孩子。5.若n为奇数,则每个分支结点都有左子女和右子女,若n为偶数,则编号最大的分支结点(编号为n/2)只有左子女,没有右子女,其余分支结点左,右子女都有。
3.二叉排序树:一颗二叉树或者空二叉树,或者是具有如下性质的二叉树:左子树上所有结点的关键字均小于根结点的关键字,右子树上所有的结点的关键字均大于根结点的关键字,左子树和右子树又各是一颗二叉排序树。
4.平衡二叉树,书上任一结点的左子树和右子树的深度只差不超过1.
3.二叉树的性质,非空二叉树上叶子结点等于度为2的结点数加1,即N0=N2+1。证明:设度为0,1,2的结点个数分别为N0,N1,N2,再看二叉树中的分支数,除根结点外,其余结点都有一个分支进入,设B为分支总数,则N=B+1,由于这些分支是由度为1和2的结点射出的,所以又有B=N1+2N2.    
二叉树的存储结构,顺序存储结构,二叉树的顺序结构存储结构就是用一组地址连续的存储单元依次自上而下,自左向右存储完全二叉树上的结点元素,即将完全二叉树上编号为i的结点元素存储在某个数组下标为i-1的分量中,然后通过一些方法确定结点在逻辑上的父子和兄弟关系。
但对于一般的二叉树,为了让数组下标能反映二叉树中结点之间的逻辑关系,只能添加一些并不存在的空结点让每一个结点与完全二叉树的结点相对照,再存储到一维数组的相应的分量中,然而,在最坏的情况下,一个高度为H且只有一个H结点的单支树却需要占据接近。。。个存储单元,二叉树的顺序存储如图所示,其中0表示并不存在的空结点。
注意:这种存储结构显然要从数组下标1开始存储树中的结点,如果从数组下标0开始存储,则不满足性质4的描述,这是考生在书写程序的时候容易忽略的。
注意区别 树的顺序存储结构与二叉树的顺序存储结构。在树的顺序存储结构中,数组下标代表结点的编号,下标上所存在的内容指示了结点之间的关系。而在二叉树的顺序存储结构中,数组下标既代表了结点的编号,也指示了树中各结点之间的关系,这种关系借助完全二叉树的性质反映,当然,二叉树属于树,因此二叉树都可以用树的存储结构来存储,但是树却不能用二叉树的存储结构来存储。
链式存储结构,由于顺存储空间对空间利用率较低,因此,一般二叉树都采用链式存储结构,链式结构是指用一个链表来存储一个二叉树,而二叉树中每一个结点用链表的一个链结点来存储,在二叉树中,结点结构通常包括若干数据域与若干个指针域即若干个指针域。二叉链表至少包含三个域,数据域data,左指针域,和右指针域。
常用的二叉树表的存储结构,而在实际不同的应用中,还可以增加某些指针与如增加指向父结点的指针,则变成三叉链表的存储结构。
二叉树链式存储结构描述如下,使用不同的存储结构,实现而擦函数操作的算法也会不同,因此,要根据实际应用的场合来选择合适的存储空间,在含有n个结点的二叉链表中含有n+1个空链域,在下一节中,我们将利用这些空链域来组成另一种链表结构-线索链表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值