二叉树的基本知识_第1页
二叉树的基本知识_第2页
二叉树的基本知识_第3页
二叉树的基本知识_第4页
二叉树的基本知识_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据对象 D:D是具有一样特性的数据元素的集合。 假设D为空集,那么称为空树; 否那么: (1) 在D中存在唯一的称为根的数据元素root, (2) 当n1时,其余结点可分为m (m0)个互 不相交的有限集T1, T2, , Tm, 其中每一 棵子集本身又是一棵符合本定义的树, 称为根root的子树。 数据关系 R:第二页,共36页。结点:结点的度:树的度:叶子结点:分支结点:数据元素+假设干指向子树的分支分支的个数树中所有结点的度的最大值度为零的结点度大于零的结点DHIJM第三页,共36页。(从根到结点的)途径:孩子结点、双亲结点、兄弟结点、堂兄弟祖先结点、子孙结点结点的层次:树的深度: 由

2、从根到该结点所经分支和结点构成ABCDEFGHIJMKL假设根结点的层次为1,第l 层的结点的子树根结点的层次为l+1树中叶子结点所在的最大层次第四页,共36页。任何一棵非空树是一个二元组 Tree = root,F其中:root 被称为根结点, F 被称为子树森林森林:是 mm0棵互不相交的树的集合ArootBEFKLCGDHIJMF第五页,共36页。 二叉树或为空树;或是由一个根结点加上两棵分别称为左子树和右子树的、互不交的二叉树组成。ABCDEFGHK根结点左子树右子树EFG第六页,共36页。两类特殊的二叉树:满二叉树:指的是深度为k且含有2k-1个结点的二叉树。完全二叉树:树中所含的

3、n 个结点和满二叉树中编号为 1 至 n 的结点一一对应。123456789 10 11 12 13 14 15abcdefghij第七页,共36页。二叉树的五种根本形态:NLRLR空树只含根结点NNN右子树为空树左子树为空树左右子树均不为空树第八页,共36页。 二叉树的主要根本操作:查 找 类插 入 类删 除 类第九页,共36页。 Root(T) / 求树的根结点 查找类:Value(T, cur_e) / 求当前结点的元素值 Parent(T, cur_e) / 求当前结点的双亲结点LeftChild(T, cur_e) / 求当前结点的最左孩子 RightSibling(T, cur_e

4、) / 求当前结点的右兄弟TreeEmpty(T) / 断定树是否为空树 TreeDepth(T) / 求树的深度TraverseTree( T, Visit() ) / 遍历第十页,共36页。InitTree(&T) / 初始化置空树 插入类:CreateTree(&T, definition) / 按定义构造树Assign(T, cur_e, value) / 给当前结点赋值InsertChild(&T, &p, i, c) / 将以c为根的树插入为结点p的第i棵子树第十一页,共36页。 ClearTree(&T) / 将树清空 删除类:DestroyTree(&T) / 销毁树的构造De

5、leteChild(&T, &p, i) / 删除结点p的第i棵子树第十二页,共36页。二叉树的重要特性第十三页,共36页。 性质 1 : 在二叉树的第 i 层上至多有2i-1 个结点。(i1) 性质 2 : 深度为 k 的二叉树上至多含 2k-1 个结点k1 性质 3 : 对任何一棵二叉树,假设它含有n0 个叶子结点、n2 个度为 2 的结点,那么必存在关系式:n0 = n2+1。第十四页,共36页。 性质 4 : 具有 n 个结点的完全二叉树的深度为 log2n +1 性质 5 假设对含 n 个结点的完全二叉树从上到下且从左至右进展 1 至 n 的编号,那么对完全二叉树中任意一个编号为 i

6、 的结点: (1) 假设 i=1,那么该结点是二叉树的根,无双亲, 否那么,编号为 i/2 的结点为其双亲结点; (2) 假设 2in,那么该结点无左孩子, 否那么,编号为 2i 的结点为其左孩子结点; (3) 假设 2i+1n,那么该结点无右孩子结点, 否那么,编号为2i+1 的结点为其右孩子结点第十五页,共36页。二叉树的存储构造二、二叉树的链式 存储表示一、 二叉树的顺序 存储表示第十六页,共36页。#define MAX_TREE_SIZE 100 / 设二叉树的最大结点数typedef struct ElemType *data; / 初始化时分配存储空间 int nodeNum;

7、/ 二叉树中的结点数目SqBiTree ;一、 二叉树的顺序存储表示/ 0号单元存储根结点第十七页,共36页。例如: A B D 0 1 2 3 4 5 6 7 8 9 10 11 12 13ABCDEF1401326(k+1)2-1 =2k+1CE F第十八页,共36页。二、二叉树的链式存储表示1. 二叉链表2三叉链表3双亲链表第十九页,共36页。ADEBCF rootlchild data rchild结点构造:1. 二叉链表第二十页,共36页。typedef struct / 结点构造 TElemType data; struct BiTNode *lchild, *rchild; /

8、左右孩子指针 BiTNode, *BiTree;lchild data rchild结点构造:C 语言的类型描绘如下:第二十一页,共36页。rootADEBCF 2三叉链表parent lchild data rchild结点构造:第二十二页,共36页。 typedef struct / 结点构造 TElemType data; struct TriTNode *lchild, *rchild; / 左右孩子指针 struct TriTNode *parent; /双亲指针 TriTNode, *TriTree;parent lchild data rchild结点构造:C 语言的类型描绘如下

9、:第二十三页,共36页。结点构造:3双亲链表 data parentABDCEF0 B41 D42 C03 E14 A -15 F36LRTagLRRRL根根n = 6第二十四页,共36页。 typedef struct / 结点构造 TElemType data; int *parent; / 指向双亲的指针 char LRTag; / 左、右孩子标志域 BPTNode typedef struct / 树构造 BPTNode nodesMAX_NODE_SIZE; int num_node; / 树中含结点数目 int root; / 根结点的位置 BPTree第二十五页,共36页。树的三

10、种存储构造一、双亲表示法二、孩子链表表示法三、树的二叉链表(孩子-兄弟 存储表示法第二十六页,共36页。ABCDEFGr=0n=60 A -11 B 02 C 03 D 04 E 2 5 F 26 G 5data parent一、双亲表示法:第二十七页,共36页。 typedef struct PTNode Elem data; int parent; / 双亲位置域 PTNode; data parent#define MAX_TREE_SIZE 100结点构造:C语言的类型描绘:第二十八页,共36页。typedef struct PTNode nodes MAX_TREE_SIZE; in

11、t r, n; / 根结点的位置和结点个数 PTree;树构造:第二十九页,共36页。r=0n=6 data firstchildABCDEFG0 A -11 B 02 C 03 D 04 E 25 F 26 G 464 5 1 2 3二、孩子链表表示法:-1 0 0 0 2 2 4parent第三十页,共36页。typedef struct CTNode int child; struct CTNode *nextchild; *ChildPtr;孩子结点构造: child nextchildC语言的类型描绘:第三十一页,共36页。 typedef struct Elem data; ChildPtr firstchild; / 孩子链的头指针 CTBox;双亲结点构造 data firstchild第三十二页,共36页。typedef struct CTBox nodesMAX_TREE_SIZE; int n, r; / 结点数和根结点的位置 CTree;树构造:第三十三页,共36页。ABCDEFGroot AB C E D F G AB C E D F G 三、树的二叉

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论