版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二叉树的基本知识树SDUT_ACM培训数据对象D:D是具有相同特性的数据元素的集合。
若D为空集,则称为空树;否则:(1)在D中存在唯一的称为根的数据元素root,(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每一棵子集本身又是一棵符合本定义的树,称为根root的子树。
数据关系R:结点:结点的度:树的度:叶子结点:分支结点:数据元素+若干指向子树的分支分支的个数树中所有结点的度的最大值度为零的结点度大于零的结点DHIJM(从根到结点的)路径:孩子结点、双亲结点、兄弟结点、堂兄弟祖先结点、子孙结点结点的层次:树的深度:
由从根到该结点所经分支和结点构成ABCDEFGHIJMKL假设根结点的层次为1,第l层的结点的子树根结点的层次为l+1树中叶子结点所在的最大层次任何一棵非空树是一个二元组
Tree=(root,F)其中:root被称为根结点,
F被称为子树森林森林:是m(m≥0)棵互不相交的树的集合ArootBEFKLCGDHIJMF
二叉树或为空树;或是由一个根结点加上两棵分别称为左子树和右子树的、互不交的二叉树组成。ABCDEFGHK根结点左子树右子树EFG两类特殊的二叉树:满二叉树:指的是深度为k且含有2k-1个结点的二叉树。完全二叉树:树中所含的n个结点和满二叉树中编号为1至n的结点一一对应。123456789101112131415abcdefghij二叉树的五种基本形态:NLRLR空树只含根结点NNN右子树为空树左子树为空树左右子树均不为空树
二叉树的主要基本操作:查找类插入类删除类
Root(T)//求树的根结点
查找类:Value(T,cur_e)//求当前结点的元素值
Parent(T,cur_e)//求当前结点的双亲结点LeftChild(T,cur_e)//求当前结点的最左孩子RightSibling(T,cur_e)//求当前结点的右兄弟TreeEmpty(T)//判定树是否为空树TreeDepth(T)//求树的深度TraverseTree(T,Visit())//遍历InitTree(&T)//初始化置空树
插入类:CreateTree(&T,definition)//按定义构造树Assign(T,cur_e,value)//给当前结点赋值InsertChild(&T,&p,i,c)//将以c为根的树插入为结点p的第i棵子树
ClearTree(&T)//将树清空
删除类:DestroyTree(&T)//销毁树的结构DeleteChild(&T,&p,i)//删除结点p的第i棵子树二叉树
的重要特性
性质1:在二叉树的第i
层上至多有2i-1个结点。(i≥1)性质2:
深度为k的二叉树上至多含2k-1个结点(k≥1)
性质3
:
对任何一棵二叉树,若它含有n0个叶子结点、n2个度为
2
的结点,则必存在关系式:n0=n2+1。。
性质4:
具有n个结点的完全二叉树的深度为
log2n
+1性质5若对含n个结点的完全二叉树从上到下且从左至右进行1
至n
的编号,则对完全二叉树中任意一个编号为i
的结点:
(1)若i=1,则该结点是二叉树的根,无双亲,
否则,编号为
i/2
的结点为其双亲结点;
(2)若2i>n,则该结点无左孩子,
否则,编号为2i的结点为其左孩子结点;
(3)若2i+1>n,则该结点无右孩子结点,
否则,编号为2i+1的结点为其右孩子结点二叉树的存储结构二、二叉树的链式存储表示一、二叉树的顺序存储表示#defineMAX_TREE_SIZE100//设二叉树的最大结点数typedefstruct{
ElemType*data;
//初始化时分配存储空间
intnodeNum;//
二叉树中的结点数目}SqBiTree;一、二叉树的顺序存储表示//
0号单元存储根结点例如:
ABD
012345678910111213ABCDEF1401326(k+1)2-1=2k+1CEF二、二叉树的链式存储表示1.二叉链表2.三叉链表3.双亲链表ADEBCF
rootlchilddatarchild结点结构:1.二叉链表typedefstruct
{//结点结构
TElemTypedata;
structBiTNode*lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;lchilddatarchild结点结构:C语言的类型描述如下:rootADEBCF
2.三叉链表parentlchilddatarchild结点结构:
typedefstruct
{//结点结构
TElemTypedata;
structTriTNode*lchild,*rchild;//左右孩子指针
structTriTNode
*parent;//双亲指针
}TriTNode,*TriTree;parentlchilddatarchild结点结构:C语言的类型描述如下:结点结构:3.双亲链表dataparentABDCEF0B41D42C03E14A-15F36LRTagLRRRL根n=6
typedefstruct
{//结点结构
TElemTypedata;
int
*parent;//指向双亲的指针
charLRTag;//左、右孩子标志域
}BPTNode
typedefstruct{//树结构
BPTNodenodes[MAX_NODE_SIZE];
intnum_node;//树中含结点数目
introot;//根结点的位置
}BPTree树的三种存储结构一、双亲表示法二、孩子链表表示法三、树的二叉链表(孩子-兄弟)存储表示法ABCDEFGr=0n=60A-11B02C03D04E25F26G5dataparent一、双亲表示法:
typedefstructPTNode{Elemdata;
intparent;//双亲位置域
}PTNode;
dataparent#defineMAX_TREE_SIZE100结点结构:C语言的类型描述:typedefstruct{PTNodenodes[MAX_TREE_SIZE];
intr,n;//根结点的位置和结点个数
}PTree;树结构:r=0n=6
datafirstchildABCDEFG0A-11B02C03D04E25F26G4645123二、孩子链表表示法:-1000224parenttypedefstructCTNode{
intchild;
structCTNode*nextchild;}*ChildPtr;孩子结点结构:
childnextchildC语言的类型描述:
typedefstruct{Elemdata;ChildPtrfirstchild;//孩子链的头指针
}CTBox;双亲结点结构
datafirstchildtypedefstruct{CTBoxnodes[MAX_TREE_SIZE];
intn,r;//结点数和根结点的位置
}CTree;树结构:ABCDEFGrootABCEDFGABCE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实验室用电安全管理操作规程
- 实验室人员岗前培训管理操作规程
- 山体创面植被修复工程设计方案
- 乙苯装置操作工测试验证考核试卷含答案
- 木地板成型工岗前岗位操作考核试卷含答案
- CN119487786A 用于防止区块链网络中的矿工可提取价值(mev)攻击的系统、方法和计算机程序产品 (维萨国际服务协会)
- 溶剂油装置操作工持续改进水平考核试卷含答案
- CN119487498A 用于可追溯性意识人工智能的方法、架构、设备和系统 (交互数字专利控股公司)
- CN119487454A 量测方法及相关联的量测设备 (Asml荷兰有限公司)
- 香精配制工复测知识考核试卷含答案
- 2025年全国人大机关公开遴选公务员真题(附答案)
- 中国广电山东网络有限公司2026年度市县公司招聘145个模拟试卷附答案
- 直播间话术顺口溜词语大全
- 2025年家用学习打印机行业研究与消费行为调查数据
- 合成生物产品质量检测工程师岗位招聘考试试卷及答案
- 重师新生入学教育考试试题及答案
- 大公司办公职场管理制度
- 致敬劳动者争做劳动小先锋-劳动教育主题队会
- 【高分复习笔记】李天元《旅游学概论》(第5版)笔记和课后习题详解
- GA/T 1357-2018公共安全视频监控硬盘分类及试验方法
- 《伤逝》-鲁迅课件-大学语文(经典实用)
评论
0/150
提交评论