- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件基串讲二
计算机软件基础; 树与二叉树 ;在现实世界中,能用树这种数据结构表示的例子有很多。例如,图中的树表示了学校行政关系结构;由于树具有明显的层次关系,因此,树与二叉树都可以用树这种数据结构来描述。在所有的层次关系中,人们最熟悉的是血缘关系,按血缘关系可以很直观地理解树结构中各数据元素结点之间的关系,因此,在描述树结构时,也经常使用血缘关系中的一些术语。;树:是一个或多个结点的有穷集合T,且满足以下条件:
1、有且仅有一个指定的称作树根的结点;
2、除根以外的其余结点被分成m个不相交的集合,这些集合的每一个又都是树,并且称为根的子树。;2.树的一些术语
结点的度:结点N的子树数称为结点的度。
树的度:树T中各结点的度的最大值称的树T的度。
叶子:树中度为0的结点称为叶子(终端结点)。
分枝结点:树中度不为0的结点???为分枝结点(非终端结点)。
双亲和孩子:若树中结点P的一棵子树的根是结点C,则我们称P是C的双亲或父母,反之称C是P的孩子。
结点的层数:树的层数为1,其余任一结点的层数等于它的双亲的层数加1.
树的深度:树中各结点的层数的最大值称为T的深度(高度)。;3.二叉树
1)二叉树概念
二叉树(bintree)是一种很有用的非线性结构。二叉树不同于前面介绍的树结构,但它与树结构可以相互转换,二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。
二叉树是n(n?0)个结点的有限集合,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称这个根的左子树和右子树的二叉树组成。
二叉树不是树的特殊情形,与度数为2的有序树不同。;二叉树具有以下两个特点:
(1)非空二叉树只有一个根结点;
(2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。
由以上特点可以看出,在二叉树中,每一个结点的度最大为2,即所有子树(左子树或右子树)也均为二叉树,而树结构中的每一个结点的度可以是任意的。另外,二叉树中的每一个结点的子树被明显地分为左子树与右子树。在二叉树中,一个结点可以只有左子树而没有右子树,也可以只有右子树而没有左子树。当一个结点既没有左子树,也没有右子树时,该结点即是叶子结点。图是一棵深度为4的二叉树。
五种形态:空,根,左,右,左右
;2)二叉树的基本性质
性质1:在二叉树的第k层上,最多有2k–1个结点。
根据二叉树的特点,这个性质是显然的。
性质2:深度为k的二叉树最多有2k–1个结点。
深度为k的二叉树是指二叉树共有k层。根据性质1,只要将第1层到第k层上的最大的结点数相加,就可以得到整个二叉树中结点数的最大值,即
性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,即
n0=n2+1
性质4:具有n个结点的完全二叉树的深度为
int(log2n)+1 ;满二叉树:
满二叉树是一棵深度为k,结点数为2K-1 的二叉树。
完全二叉树:
完全二叉树是满二叉树在最下层自右向左去除部分结点;
;3)二叉树的存贮表示:
顺序存贮:
二叉树的顺序存储结构就是把二叉树的所有结点按照层次顺序存储到连续的存储单元中。(存储前先将其画成完全二叉树)
链表表示:lchild,data,rchlid
;4)遍历:
根据访问结点的次序不同可得三种遍历:先序遍历(前序遍历或先根遍历),中序遍历(或中根遍历)、后序遍历(或后根遍历)。
前序:根—左—右
中序:左—根—右
后序:左—右—根;5)树的二叉树表示
转换方法:
·兄弟相连,保留长子的连线。;查找;二、查找方法
线性表查找的方法:
·顺序查找:逐个查找,ASL=(n+1)/2;
·二分查找:取中点int(n/2)比较,若小就比左区间,大就比右区间。用二叉判定树表示。ASL=(∑(每层结点数*层数))/N.;二叉排序树(BST),(二叉查找树)。定义是:
二叉排序树是空树或者满足如下性质的二叉树:
·若它的左子树非空,则左子树上所有结点的值均小于根结点的值;
·若它的右子树非空,则右子树上所有结点的值均大于根结点的值;
·左、右子树本身又是一棵二叉排序树。
二叉排序树的插入、建立、删除的算法平均时间性能是:
O(nlog2n)。
二叉排序树的删除操作可分三种情况进行处理:
·*P是叶子,则直接删除*P,即将*P的双亲*parent中指向*P的指针域置空即可。
·*P只有一个孩子*child,此时只需将*child和*p的双亲直接连接就可删去*p.
·*p有两个孩子,则先将*p结点的中序后继结点的数据到*p,删除中序后继结点。;散列技术:将结点按其关键字的散列地址存储到散列
文档评论(0)