- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十四课 数据结构——树
12.0 树型结构
12.1树的应用
12.2 二叉树及其应用
12.3 霍夫曼二叉树
12.4 线段树 12.0 树型结构
(一)树的定义
树是一种数据结构,它是由n(n 1)个有限结点组成一个具有层次逻辑关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:
1 每个结点有零个或多个子结点;
2 每一个子结点只有一个父结点;
3 没有前驱的结点为根结点;
4 除了根结点外,每个子结点可以分为m个不相交的子树;
(二)树的有关术语
1 节点的度:一个节点含有的子树的个数称为该节点的度;
2 叶节点或终端节点:度为零的节点称为叶节点;
3 非终端节点或分支节点:度不为零的节点;
4 双亲节点或父节点:若一个结点含有子节点,则这个节点称为其子节点的父节点;
5 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
6 兄弟节点:具有相同父节点的节点互称为兄弟节点;
7 树的度:一棵树中,最大的节点的度称为树的度;
8 节点的层次:从根开始定义起,根为第0层,根的子结点为第1层,以此类推;
9 树的高度或深度:树中节点的最大层次;
10 堂兄弟节点:双亲在同一层的节点互为堂兄弟;
11 节点的祖先:从根到该节点所经分支上的所有节点;
12 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
13 森林:由m(m 0)棵互不相交的树的集合称为森林;
(三)树的物理存储 一般使用数组来线性存储树中各节点的数据本身,但为了记录各节点之间的父
子关系,需要附加存储父亲或孩子节点所在的位置。
双亲表示法:
可以存储为:
A B C D E F G H I J K 1 1 1 2 4 4 5 5 5 7 1 2 3 4 5 6 7 8 9 10 11
优点:
节省空间。
便于从下向上访问(记录了从孩子到父亲的逻辑关系)。
便于随时插入新的子树。
缺点:不利于从上向下的访问。(未记录父亲到孩子的逻辑关系)。
例如:利用所给边集创建双亲表达树
输入:第一行两个整数n,m,表示节点个数和边的条数 下面m行,每行2个整数,表示两个节点存在父子关系
输出:如上的双亲表示法的树
program maketree; //时间复杂度O nlogn
const maxn 12;
var inf,outf:text; bian:array[1..maxn,1..2]of integer; //存储边集 tree,num:array[1..maxn]of integer; //存储树、各节点的度 t:array[1..maxn]of boolean; //哈希 n,m,i,j,k:integer;
///////////////////////////////////////////////
procedure init;
begin assign inf,maketree.in ; assign outf,maketree.out ;reset inf ; readln inf,n,m ; for i: 1 to m do begin readln inf,bian[i,1],bian[i,2] ; inc num[bian[i,1]] ; inc num[bian[i,2]] ; //统计各节点的度 end;
end;
///////////////////////////////////////////////
procedure make;
begin i: 1; k: 0; fillchar t,sizeof t ,true ; while k m do begin while num[i] 1 do i: i mod n+1; //查找度为1的节点 j: 1; while not t[j]and bian[j,1] i or bian[j,2] i do inc j ; //找到包含该 if j n then break; //节点的边 t[j]: false; if bian[j,1] i then tree[i]: bian[j,2]; if bian[j,2] i then tree[i]: bian[j,1]; dec num[bian[j,1]] ; dec num[bian[j,2]] ; inc k ; end;
end;
///////////////////////////////////////////////
procedure print;
begin rewrite
您可能关注的文档
最近下载
- (高清版)-B-T 3565.5-2022 自行车安全要求 第5部分:车把试验方法.pdf VIP
- 工程保险合同纠纷裁判指引_记录.docx VIP
- 福建省房屋建筑和市政基础设施工程质量监督抽查抽测规定试行.doc VIP
- 《自然语言处理技术及应用》课程标准.pdf VIP
- 宗教的文化专题——道教.ppt VIP
- (最新)知识考核旅行社计调三级真题精选附答案(答案在末尾).docx
- 临床常见病的中西医诊疗与康复新进展题库答案-2025年华医网继续教育答案.docx VIP
- (正式版)D-L∕T 266-2023 接地装置冲击特性参数测试导则.docx VIP
- (正式版)D-L∕T 266-2012 接地装置冲击特性参数测试导则.docx VIP
- ABB XT2-XT4 电子脱扣器 Ekip Dip LSI-LSIG 手册(中文).pdf
原创力文档


文档评论(0)