- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构6章树1
第六章 树和二叉树 线性结构:线性表,栈,队列 串,数组,广义表 非线性结构:树和二叉树 图,网 6.1树的定义 6.1.1 定义和术语 1.树(tree) 树是n(n≥0)个结点的有限集T,当n=0时,T为空树; 当n0时,(1)有且仅有一个称为T的根的结点,(2)余下的结点分为m(m ≥ 0)个互不相交的有限集T1,T2,...,Tm , 每个Ti(I=1,2,…,m)也是一棵树,且称为根的子树。 例1. 一个结点的树 T={A} T1={B,C,D,E,F} T11={C,D,E} T111={D} T112={E} T12={F} T2={G,H} T21={H} T3={I,J,K,L,M,N,O,P} T31={J,K,L,M,N} T32={O} T33={P} T311={K} T312={L} ... 2.结点的度(degree)---结点的子树数目 3.树的度----树中各结点的度的最大值 4.n度树----度为n的树 5.叶子(终端结点)----度为0的结点 6.分枝结点(非终端结点,非叶子)---- 度不为0的结点。除根外,所有分支结点称为内结点,根为开始结点。 7.双亲(父母,parent)和孩子(儿子,child) 12.祖先----从树的根到某结点所经分枝上的所有结点为该结点 的祖先。 13.子孙----一个结点的所有子树的结点为该结点的子孙。 14.有序树----若任一结点的各棵子树,规定从左至右是有次序 的,即不能互换位置,则称该树为有序树。 15.无序树----若任一结点的各棵子树,规定从左至右是无次序 的,即能互换位置,则称该树为无序树。 16.森林-----m(m≥0)棵互不相交的树的集合。 3.凹入表/书目表 7.插入一个结点 8.删除一个结点 9.求结点的层号 10.求结点的度 11.求树T的叶子/非叶子 12................... 6.2 二叉树(binary tree) 6.2.1 定义和术语 1.二叉树的递归定义 二叉树是有限个结点的集合,它或者为空集;或者是 由一个根结点和两棵互不相交的,且分别称为根的左子树 和右子树的二叉树所组成。 若二叉树为空集,则为空二叉树。 例. 3.二叉树与2度树的区别 (1)二叉树 4.三个结点不同形态的二叉树(5种) 6.二叉树的基本操作 1.置T为空二叉树:T={ } 2.销毁二叉树T 3.生成二叉树T: 例:生成哈夫曼树、二叉排序树、平衡二叉树、堆 4.遍历二叉树T: 按某种规则访问T的每一个结点一次且仅一次的过程。 5.二叉树 ←→ 树 6.二叉树 → 平衡二叉树 7.求结点的层号 8.求结点的度 9.求二叉树T的深度 10.插入一个结点 11.删除一个结点 12.求二叉树T的叶子/非叶子 13................... 6.2.2 二叉树的性质和特殊二叉树 1.二叉树的第i(i≥1)层最多有2i-1个结点 2.深度为k的二叉树最多有2k-1个结点 3.叶子的数目=度为2的结点数目+1 n0 = n2 + 1 4.满二叉树(full binary tree)---- 深度为k且有2k-1个结点的二叉树。 (2)顺序编号的满二叉树 ● ? X ? = 不大于X的最大整数,取X的下限/地板 ● ? X ? = 不小于X的最小整数,取X的上限/天花板 例 ?3.1? = 3, ?3.9? = 3, ? 3 ? = 3 ?3.1? = 4, ?3.9? = 4 ? 3 ? = 3 5.完全二叉树(full binary tree)---- 深度为k的有n个结点的二叉树,当且仅当每一个结点 都与同深度的满二叉树中编号从1至n的结点一一对应,称 之为完全二叉树(其它教材称为“顺序二叉树”)。 例. 完全二叉树: 例 非完全二叉树: 6.2.3 二叉树的存储结构 1.顺序结构 (1) n个结点的完全二叉树,使用一维数组: 例. ElemType tree[n+1]; char t[7]; (2) 一般二叉树 (3)右单枝树 2.链式存储结构 (1)二叉链表 typedef char DataType;//由用户定义Dat
文档评论(0)