- 1、本文档共105页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
普通高等教育国家级规划教材《数据结构》(C语言版);第7章二叉树;2023/8/25;2023/8/25;7.1二叉树的基本概念;二叉树有以下五种基本形态:;二叉树与一般树型结构的主要区别在于:;二叉树具有以下重要性质:;性质2深度为h的二叉树至多有2h-1个结点(h1)。;证明:假设二叉树中总的结点个数为n,度为1的结点个数为n1,则有:n=n0+n1+n2
二叉树中树枝的总数为n-1,且这些树枝均由度为2和度为1的结点产生。由此可得n-1=n1+2*n2,即:n=n1+2*n2+1
于是有:n0+n1+n2=n1+2*n2+1,化简可得n0=n2+1。;如果一棵二叉树中所有终端结点均位于同一层次,而其它非终端结点的度数均为2,则称此二叉树为满二叉树。在满二叉树中,若其深度为h,则其所包含的结点个数必为2h-1。;;若对深度相同的满二叉树和完全二叉树中的所有结点按自上而下、同一层次按自左向右的顺序依次编号,则两者对应位置上的结点编号应该相同。;性质4对于具有n个结点的完全二叉树,如果按照从上到下、同一层次上的结点按从左到右的顺序对二叉树中的所有结点从1开始顺序编号,则对于序号为i的结点,有:;(2)如果2in,则结点i无左子女(此时结点i为终端结点);否则其左子女为结点2i;;思考题;7.2二叉树的基本运算
ADTbintree{
数据对象D:D是具有相同性质的数据元素构成的集合。
数据关系R:如果D为空或D仅含一个元素,则R为空;否则D中存在一个特殊的结点root,称之为根结点,其无前驱;其它结点被分成互不相交的两个集合,分别构成root的左子树l和右子树r;若l和r非空,则它们的根结点lroot和rroot分别称为整棵二叉树根结点root的后继结点;左子树l和右子树r也是二叉树,因而它们中数据元素间的关系也同样满足R的定义。
二叉树的基本操作如下:
(1)createbitree(t)
(2)destroybitree(t)
(3)root(t);(4)leftchild(t)
(5)rightchild(t)
(6)locate(t,x)
(7)parent(t,x)
(8)isempty(t)
(9)depth(t)
(10)numofnode(t)
(11)addchild(t,x,t1,b)
(12)deletechild(t,x,b)
(13)setnull(t)
(14)isequal(t1,t2)
(15)preorder(t)
(16)inorder(t)
(17)postorder(t)
(18)transform1(F,t)
(19)transform2(t,F)
}ADTbintree.;7.3二叉树的存储结构;7.3二叉树的存储结构;a;;;a;一般二叉树顺序存储数据结构的定义如下:
#defineMAXSIZE20
typedefchardatatype;/*结点值的类型*/
typedefstruct{
datatypedata;
intlchild,rchild;
}node;/*二叉树结点的类型*/
nodetree[MAXSIZE];
intn;/*树中实际所含结点的个数*/
introot;/*存放根结点的下标*/
;带双亲指示的二叉树顺序存储数据结构的定义如下:
#defineMAXSIZE20
typedefchardatatype;/*结点值的类型*/
typedefstruct{
datatypedata;
intlchild,rchild;
intparent; /*存放双亲结点的下标*/
}node; /*二叉
文档评论(0)