- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北工大(数据结构)11-DSch6Tree
第6章 树 6.1 树的定义和基本术语 6.2 树的链式存储结构 6.3 树的顺序存储 6.4 K叉树(不讲) 6.1 树的定义和基本术语 6.1.1 树和森林 6.1.2 森林与二叉树的等价转换 6.1.3 树的抽象数据类型 6.1.4 树的周游 6.1.1 树和森林树的定义(递归) 树(tree)是包括n个结点的有限集合T (n≥1),使: 有且仅有一个特定结点称为根(root) 除根以外的其它结点被分成m个(m≥0)不相交的集合T1,T2,…,Tm,而且这些集合的每一个又都是树。 树T1,T2,…,Tm称作这个根的子树(subtree) 6.1.1 树和森林树的逻辑结构 包含n个结点的有穷集合K (n0),且在K上定义了一个满足以下条件的二元关系R={ r }: 有且仅有一个结点k0∈K,它对于关系N来说没有前驱。结点k0称作树的根 除结点k0外,K中的每个结点对于关系r来说都有且仅有一个前驱 除结点k0外的任何结点k∈K,都存在一个结点序列k0,k1,…,ks,使得k0就是树根,且ks=k,其中有序对ki-1,ki∈r (1≤i≤s)。这样的结点序列称为从根k0到结点k的一条路径 6.1.1 树和森林树形结构的各种表示法 6.1.1 树和森林树结构中的概念 一棵树若存在结点k指向结点k’的连线(k,k’∈r )则称k是k’的父结点,k’则是k的子结点,有向连线称作边 同一个父结点的子结点之间互称兄弟 没有父结点的结点称为根,没有子结点的结点称为叶 结点的度:结点子树数目 树的度:树中各结点度的最大值 若树中存在结点序列k0,k1…ks,使得k0,k1,k1,k2,…ks-1,ks都是树中的边,成从结点k0到结点ks存在一条路径,则称k0是ks的祖先,ks是k0的子孙 结点层数:根为第0层,子结点层数=父结点层数+1 6.1.1 树和森林树结构中的概念 在树T中如果子树T1,T2,…,Tm的相对次序是重要的,则称树T为有序树 为方便计算机处理,将子结点从左到右依次编号,即树是有序树(ordered tree) 度为2的有序树≠二叉树 度为2的有序树:删除第1子结点后,第2子结点顶替为第1子结点 二叉树:度为2且严格区分左右两个子结点的有序树才是二叉树 6.1.1 树和森林 森林与树 森林(forest) 是零棵或多棵不相交的树的集合(通常是有序集合)。 树?森林:删去树根,树就变成森林。 森林?树:加上一个结点作树根,森林就变成树 在树或森林与二叉树之间有一个一一对应的关系 任何森林都唯一地对应到一棵二叉树 任何二叉树也都唯一地对应到一个森林 6.1.2 森林与二叉树的等价转换树与二叉树的等价转换 举例 6.1.2 森林与二叉树的等价转换树二叉树转换规则理解 一.树(森林) ? 二叉树 将第一个孩子当作左孩子, 将下一个兄弟当作右孩子(各树的根当作兄弟) 二.二叉树 ? 树 (森林) 将左孩子当作第一个孩子, 将右孩子当作下一个兄弟(共有一个双亲) (各树的根当作兄弟) 6.1.2 森林与二叉树的等价转换图式 森林由3部分组成: 森林中第一棵树的根结点 森林中第一棵树的子树森林 森林中其它树构成的森林 6.1.2 森林与二叉树的等价转换举例 6.1.2 森林与二叉树的等价转换森林与二叉树的转换规则 F(T1,T2,…,Tn) T1(root,t11,t12,…t1m)B(LBT,Node(root),RBT) 森林?二叉树 若F=空,则B=空 否则 由Root(T1) ?Node(root) 由(t11,t12,…,t1m) ?LBT 由(T2,T3,…,Tn)?RBT 6.1.3 树的抽象数据类型树结点的抽象数据类型[代码6.1] 1/2 templateclass T class TreeNode { public: TreeNode(const T value); //用于拷贝的构造函数 virtual ~TreeNode( ); //析构函数 bool isLeaf( ); //判断当前结点是否是叶(返true/false) T Value( ); //返回结点的值 TreeNodeT* LeftMostChild( ); //返回第一个左孩子 TreeNodeT* RightSibling( ); //返回右兄弟 树结点的抽象数据类型 2/2 void setValue(T); //设置结点的值 voi
您可能关注的文档
- 初二政治上学期第四课-老师伴我成长.ppt
- 初二物理s-t图像.ppt
- 初中语文课前展示.ppt
- 初二物理声现象复习课件xgb2.ppt
- 初二英语Unit 3 Could you please clean your room Section A 3.ppt
- 初二开学班会鄢志坚.ppt
- 初次面谈-保险.ppt
- 初二课文——醉翁亭记课件.ppt
- 初四 复习讲义 机械运动与声.doc
- 初二地理上册 第一节 疆域(第一课时).ppt
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
文档评论(0)