第6章 树结构.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 树结构.ppt

6.1.1 二叉树的基本概念 ? 定义:二叉树是n(n?0)个结点的有限集,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成 ? 特点 ? 每个结点至多有二棵子树 ? 二叉树的子树有左、右之分,且其次序不能任意颠倒 ? 五种基本形态 ? 基本术语 (1) 结点(node): 表示树中的元素,包括数据项及若干指向其子树的分支 (2) 结点的度(degree): 结点拥有的子树数 (3) 叶子:度为0的结点 (4) 分支结点: 度0的结点,除叶子结点以外,树的其余结点均为分支结点 (5) 左孩子、右孩子: 结点子树的根称为该结点的孩子 (6) 双亲:孩子结点的上层结点 (7) 兄弟:同一双亲的孩子 (8) 路径、路径长度 树的一串结点,n1,n2,…,nk,若ni是ni+1的父结点,则上述串为一条n1到nk的路径,此路径的长度为k-1 (9) 祖先、子孙: 如果有一条路径从结点M到结点N,那么M就称为N的祖先,N成为M的子孙 (10) 结点的层数: 从根结点算起,根为第一层,它的孩子为第二层…… (11) 二叉树的深度: 树中结点的最大层数 (12) 满二叉树 一棵二叉树每一层的结点个数都达到了最大数。 (13) 完全二叉树 按从上到下、从左到右的顺序对某二叉树的结点编号,若任意与满二叉树中编号相同的结点,其位置也相同,则为完全二叉树 6.1.2 二叉树的主要性质 ? 性质1: 证明:根据完全二叉树的定义和性质2可知,当一棵完全二叉树的深度为k、结点个数为n时,有 ? 性质5 对于一棵有n个结点的完全二叉树,若其结点按从上到下和从左到右的顺序从1开始编号,则对任一编号为i(1?i?n)的结点,有: (1) 如果i=1,则结点i是二叉树的根,无双亲;如果i1,则其双亲是?i/2? (2) 如果2i?n,则编号为i的结点其左孩子是2i;如果 2in,则结点i无左孩子; (3) 如果2i+1?n,则编号为i的结点其右孩子是2i+1,如果2i+1n,则结点i无右孩子; 2. 链式存储结构 用链表来表示一棵二叉树,其中的“链”即反映了元素之间 的关系。通常用二叉链表或三叉链表来存储: 6.1.4 二叉树基本运算的实现 (1) 建立一棵空二叉树 Initiate(bt) (2) 创建二叉树 Create(x,lbt,rbt) 生成一棵以x为根结点数据信息域,以二叉树lbt和rbt为左右子树的二叉树,建立成功返回二叉树结点指针,失败时返回空指针。 (3) 插入左(右)孩子 InsertL(bt,x,parent)(InsertR) 在二叉树bt中的parent所指结点和其左(右)子树之间插入数据元素为x的结点,插入成功返回根结点指针,失败返回空指针 (4) 删除只有一个结点的左子树 DeleteL(bt,parent) (删除右子树 DeleteR(bt,parent)) 在二叉树bt中删除parent所指结点的左子树,当其左子树为空时,删除失败;删除成功时返回根结点指针,删除失败时返回空指针 ? 三种遍历的递归算法 (1)先序遍历的非递归实现 结点结构定义 typedef struct BiThrNode { datatype data; struct BiThrNode *lchild, *rchild; unsigned ltag, rtag; }BiThrNodeType,*BiThrTree; 线索二叉树的构建及遍历 4. 线索树的遍历 5. 在中序线索二叉树上的更新 基本概念 ? 路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径 ? 路径长度:路径上的分支数 ? 二叉树的路径长度:从树根到所有叶子结点的路径长度之和 ? 结点的权:根据应用的需要可以给树的结点赋权值; ? 构造哈夫曼树步骤 (1) 根据给定的n个权值{w1,w2,……wn},构造n棵只有一个结点的二叉树,得到一个二叉树的集合F={T1,T2,…,Tn} (2) 在F中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和 (3) 在F中删除这两棵树,同时将新得到的二叉树加入F中 (4) 重复上述两步,直到只含一棵树为止,这棵树即哈夫曼树 数据结构定义 1.树的定义 树(Tree)是n(n≥0)个有限数据元素的集合。当n=0时,称这棵树为空树。在一棵非空树T中: (1) 有一个特殊的数据元素称为树的根结点,根结点没有前驱结点。 (2) 若n1,除根

文档评论(0)

xinshengwencai + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档