- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(C语言版) 第6章 树[精品]
第6章 树
1树的逻辑结构
核心关系:层次关系。
1.1 通俗定义
树形表示法 广义表表示法 A(B(E,F,G),C(H),D(I,J)) 树是n(n0)个结点的有限集,在任意一棵树中:
1 有且只有一个特定的根(root)结点;
2 当n1时,其余结点可分为m(m0)个互不相交的有限子集T1,T2...Tm,每个子集是一棵树,称为子树。
1.2 形式定义
D={ai | ai∈ElemSet,i=1,…,n}
二元关系S的定义:
当n=1时,S=φ;
当n1时:
1 根的特殊地位 唯一无前驱的元素:根结点(root); 2 结点的划分 可将D-{root}划分成m(m0)个互不相交的子集D1,D2,…Dm,对任意子集Di,唯一存在xi∈Di,有root,xi∈S; 3 关系的划分 对应D-{root}的划分,可将
S-{root,x1,…,root,xm}唯一划分成互不相交的子集S1,S2,...,Sm,对于任意i, Si是Di上的二元关系。(Di,Si)是一棵树,称为根root的子树。 示例:
D={A,B,C,D,E,F,G,H,I,J,K}
S={A,B,A,C,A,D,
B,E,B,F,B,G,
C,H,
D,I,D,J
}
root: A D-{A}可分为:
D1={B,E,F,G}
D2={C,H}
D3={D,I,J} S-{A,B,A,C,A,D}可分为:
S1: {B,E,B,F,B,G}
S2: {C,H}
S3: {D,I,D,J}
1.3 概念
1.3.1 若干角色
双亲、孩子 一个序偶中的直接前驱、直接后继。 祖先、子孙 一个序偶集合中的前驱、后继。 兄弟 具有相同直接前驱的数据元素。 堂兄弟
1.3.2 与“度”相关的概念
结点的度 结点拥有的子树数。 叶子结点 度为0的结点。 分支结点 度不为0的结点。 树的度 树内所有结点的度的最大值。
1.3.3 与“深度”相关的概念
结点深度 根结点的深度为1
若结点深度为i, 则子结点深度为i 森林 m棵互不相交的树的集合。
m=0:空集;
m=1:树
1.4 基本操作
构造、析构、遍历、查找、插入、删除、
2 二叉树的逻辑结构
2.1 定义
结构简化、概念强化:左子树、右子树。
树形表示法 广义表表示法 A(B(D),C(F(,E),G))
2.2 二叉树的形态
具有n个结点的不同形态的二叉树有多少颗?
二叉树相似:二者都为空;或它们的左右子树相似。
例:n个结点的相似树的个数
template class T
int BinTreeT::GetTreeCount(int n)
{ int left,count=0;
if(n==0 || n==1) return(1);
for(left=n-1; left=0; left--)
count += GetTreeCount(left) * GetTreeCount(n-1-left);
return(count);
}
2.3 性质
2.3.1 性质1
若某二叉树的叶子结点数为n0,度为2的结点数为n2,则n0=n2+1。
试题例:若一棵m叉树中度为i的结点有Ni个,则该树的叶结点有 (N1+2N2+…+mNm+1)-(N1+N2+…+Nm) 个。
2.3.2 性质2
二叉树的第i层上的结点数最多为2i-1。
2.3.3 性质3
深度为k的二叉树中结点总数最多为2k-1。
满二叉树 完全二叉树 深度为k,共有2k-1个结点。 深度为k,前k-1层是满二叉树,第k层的结点从左至右依次排列。
2.3.4 性质4
具有n个结点的完全二叉树的深度为int(log2n)+1。
2.3.5 性质5
有n个结点的完全二叉树,结点从0顺序标号,则:
1、若i0,i的双亲结点是(i-1)/2。
2、若2i+1n,i的左孩子是2i+1;否则,i无左孩子。
3、若2i+2n,i的右孩子是2i+2;否则,i无右孩子。
3 二叉树的存储结构
3.1 顺序结构
3.1.1 存储规则
依照满二叉树的结点顺序,存放各个结点。
存储位置暗藏树的关系。
试题例:将68个结点的完全二叉树,按顺序存储结构存于数组A[0…100]中,叶子结点的最小编号是 。
A、32 B、33 C、34 D、35
试题例:具有101个结点的完全二叉树,度为1的结点有 个。
3.1.2 性能分析
满/完全二叉树:存储效率最高,插入、删除方便。
非完全二叉树的处理方法:
非完全二叉树 修补结构 不存在的结点,用特殊符号标识。
退化的二叉树及其存储效果:
您可能关注的文档
- 数学:9.2《单项式乘多项式》课件(苏科版七年级下)[精品].ppt
- 数学:2014广东高考文科数学试卷及答案解析(WORD版)[精品].doc
- 数学阅读理解问题 浙教版 中考专题讲座 初中数学课件,数学课件,数学,课件[精品].ppt
- 数形结合思想在小学低段数学教学中的应用 毕业论文[精品].doc
- 数学本科毕业论文关于数学教学方法的调查研究[精品].doc
- 数形结合思想及其在教学中的应用 毕业论文[精品].doc
- 数据库 校园小商品交易系统设计[精品].doc
- 数据库—人力资源管理系统[精品].doc
- 数学专业 毕业设计论文 中英文 外文 文献 资料 翻译[精品].doc
- 数据库医药销售管理系统课程设计报告[精品].doc
文档评论(0)