数据结构课件:1+树和二叉树的ADT2012.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据结构课件:1+树和二叉树的ADT2012.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课件 二叉 ADT2012
- 资源描述:
-
1、1树树数据结构与算法2引言前述我们所研究的数据结构线性表是线性结构。本章将研究的树型结构是一种动态的,非线性的,可描述结构层次特性的数据结构。这种结构是按分枝关系把信息联系起来的数据组织形式。在日常生活中这种结构是不少见的,如:3家谱图(谱系图)Chang Chang父祖父祖母Chang母外祖父外祖母4行政机构图中央人民政府湖南省湖北省上海市长沙 全省各地市各市、县、区5UNIX文件目录6XML文件结构7树型的网络拓扑结构8编译程序中使用语法树9树型结构小节 客观世界客观世界中广泛存在树结构中广泛存在树结构 树结构也在树结构也在计算科学领域计算科学领域中被广泛的中被广泛的(创造和)应用(创造和
2、)应用以上各例的数据(信息)组织形式,均称为树型结构。当然它与植物树有所不同,(它的根在上,枝在下)10树的定义和基本术语11树的定义 一棵树树(tree)T是由一个或一个以上结点组成的有限集 其中有一个特定的结点R称为T的根结点。 集合(TR)中的其余结点可被划分为n0个互不相交的子集T1,T2,, Tn,其中每个子集本身又是一棵树,并且其相应的根结点R1,R2,, Rn是R的子结点 子集Ti(1in)称为树T的子树子树(subtree)。 子树可如下排序:Ti排在Tj之前,当且仅当i1时,其余结点可分为时,其余结点可分为m (m0)个互个互 不相交的有限集不相交的有限集T1, T2, ,
3、Tm,其中每一其中每一 棵子集本身又是一棵符合本定义的树,棵子集本身又是一棵符合本定义的树, 称为根称为根root的子树。的子树。 数据关系数据关系 R:20 基本操作:基本操作:查查 找找 类类 插插 入入 类类删删 除除 类类21 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() ) / 遍历遍历22InitTree(&T) / 初始化置空树初始化置空树 插入类:插入类:CreateTree(&T, definition) / 按定义构造树按定义构造树Assign(T, cur_e, value) / 给当前结点赋值给当前结点赋值InsertChild(&T, &p, i, c) / 将以将以c为根的树插入为结点为根的树插入为结点p的第的第i棵子树棵子树23 ClearTree(&T)
5、/ 将树清空将树清空 删除类:删除类:DestroyTree(&T) / 销毁树的结构销毁树的结构DeleteChild(&T, &p, i) / 删除结点删除结点p的第的第i棵子树棵子树24树结点的ADT/ General tree node ADTtemplate class GTNode public: GTNode(const Elem&); / Constructor GTNode(); / Destructor Elem value(); / Return value bool isLeaf(); / TRUE if is a leaf GTNode* parent(); / Re
6、turn parent GTNode* leftmost_child(); / First child GTNode* right_sibling(); / Right sibling void setValue(Elem&); / Set value void insert_first(GTNode* n); void insert_next(GTNode* n); void remove_first(); / Remove first child void remove_next(); / Remove sibling;25树的ADT/ General tree node ADTtempl
7、ate class GenTree private: void printhelp(GTNode *); /print helper functionpublic: GenTree(); /constructor GenTree(); /Destructor void clear(); /Send nodes to free store GTNode* root(); /Return the root /Combine two subtree Void newroot(Elem&,GTNode*,GTNode*); Void print(); /Print a tree;26二叉树的定义和性质
8、27二叉树Binary Trees二叉树二叉树(binary tree)是结点是结点(node)的有限集的有限集合,这个集合或者为合,这个集合或者为空空(empty),或者由一或者由一个个根结点根结点(root)以及两棵二叉树组成以及两棵二叉树组成, 这两这两棵二叉树分别称作这个根的棵二叉树分别称作这个根的左子树左子树(left subtree)和右和右子树子树(right subtree) ,这两棵这两棵二叉树分别与根结点相连且彼此不相交二叉树分别与根结点相连且彼此不相交. 2829二叉树的五种基本形态N空树空树只含根结点只含根结点NNNLRR右子树为空树右子树为空树L左子树为空树左子树为空
9、树左右子左右子树均不树均不为空树为空树30二叉树的特性(性质1):在二叉树中,第i层上的结点数最多为2i1(i1);(归纳法): 当i=1时,只有一个结点,2i1=20=1(归纳基础)归纳假设:假定对所有的j, 1ji 命题成立,即第j层上结点总数最多为2j1个结点。那么,可以证明 j=i 时命题成立。31归纳步骤:由归纳假设可知,i1层上的结点总数最多为2i2。由于二叉树每个结点的度最大为2,所以第i层上的结点最大数为第i1层上结点最大数的2倍,即2 2i2,从而得证,i层上最大结点数为2i1.32:深度为k的二叉树至多有2k1个结点. (k1)证明:证明:深度为k的二叉树结点最大数为每一层
展开阅读全文