数据结构PPT教学课件-第六章 树和二叉树.ppt
《数据结构PPT教学课件-第六章 树和二叉树.ppt》由会员分享,可在线阅读,更多相关《数据结构PPT教学课件-第六章 树和二叉树.ppt(125页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6引言:引言:树型结构是一类重要的树型结构是一类重要的非线性非线性结构。树型结构是结点之间有分结构。树型结构是结点之间有分支,且具有层次关系的结构,支,且具有层次关系的结构,非常类似于自然界中的树。非常类似
2、于自然界中的树。树结构在客观世界大量存在。例如家谱、树结构在客观世界大量存在。例如家谱、行政组织机构行政组织机构都可用都可用树形象地表示。树形象地表示。树在计算机领域中也有着广泛的应用:树在计算机领域中也有着广泛的应用:在编译程序中,用树来表示源程序的语法结构;在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在数据库系统中,可用树来组织信息;Windows操作系统中对磁盘文件的管理。操作系统中对磁盘文件的管理。计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationSci
3、ence&TechnologyChap6教师教师学生学生其他人员其他人员20072007级级 20082008级级 20092009级级20102010级级南信大南信大数理院数理院计算机院计算机院语院语院叶子叶子根根子树子树计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6 第六章第六章 树和二叉树树和二叉树6.1 6.1 树的定义和基本术语树的定义和基本术语6.2 6.2 二叉树二叉树6.36.3遍历二叉树和线索二叉树遍历二叉树和线索二叉树6.4
4、 6.4 树和森林树和森林6.6.5 5 哈夫曼树及应用哈夫曼树及应用计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6树的定义、术语、操作树的定义、术语、操作二叉树定义、性质、操作二叉树定义、性质、操作二叉树的存储结构二叉树的存储结构(重点重点)顺序存储、顺序存储、链接存储链接存储线索二叉树线索二叉树(难点难点)(特殊的链接存储结构)(特殊的链接存储结构)二叉树二叉树运算运算递归递归遍历遍历非递归非递归遍历遍历二叉树遍历二叉树遍历(重点重点)二叉
5、树二叉树其他运算其他运算树的存储结构树的存储结构森林与二叉树的转换森林与二叉树的转换树和森林的遍历树和森林的遍历二叉树二叉树应用应用哈夫曼树哈夫曼树及其应用及其应用(重点、重点、难点难点)内容及重、难点内容及重、难点6.16.26.26.36.36.46.5计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap66.1 6.1 树的定义与术语树的定义与术语一、树的定义一、树的定义 树是由树是由n(n 0)个结点组成的有限集合。如果个结点组成的有限集合。如
6、果n=0,称为,称为空树空树;如果;如果n0,则:,则:有一个特定的有一个特定的元素元素称之为称之为根根(root)的结点,的结点,除根以外的其他结点划分为除根以外的其他结点划分为m(m 0)个互不相交个互不相交的有限集合的有限集合T1,Tm,每个集合又是一棵树,并且称之,每个集合又是一棵树,并且称之为根的为根的子树子树(subTree)。计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6A只有根结点的树只有根结点的树ABCDEFGHIJKLM有子
7、树的树有子树的树根根子树子树例:例:计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6ACGBDEFKLHMIJ1)树中只有根结点没有前趋;)树中只有根结点没有前趋;2)除根外,其余结点都有且仅一个前趋;)除根外,其余结点都有且仅一个前趋;3)树的结点,可以有零个或多个后继;)树的结点,可以有零个或多个后继;4)除根外的其他结点,都存在唯一条从根到该结点的路径。)除根外的其他结点,都存在唯一条从根到该结点的路径。(非空非空)树结构特点:树结构特点:
8、计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6线性结构线性结构树型结构树型结构第一个数据元素第一个数据元素(无前驱无前驱)根结点根结点 (无前驱无前驱)最后一个数据元素最后一个数据元素(无后继无后继)多个叶子结点多个叶子结点 (无后继无后继)其它数据元素其它数据元素(一个前驱、一个前驱、一个后继一个后继)其它数据元素其它数据元素(一个前驱、一个前驱、多个后继多个后继)计算机与软件学院(计算机与软件学院(SchoolofComputerandSo
9、ftware)NanjingUniversityofInformationScience&TechnologyChap6ABCDEFGHIJKLM树形表示树形表示(A(B(E(K,L),F),C(G),D(H(M),I,J)广义表广义表二、树的表示方法二、树的表示方法 I JFKLGMCCDBEA文氏图文氏图凹入表凹入表计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6结点结点(node)结点的度结点的度(degree)结点的子树个数结点的子树个数
10、分支分支(branch)结点结点度不为度不为0的结点的结点根根(root)即根结点即根结点(没有前驱没有前驱)叶叶(leaf)结点结点度为度为0的结点的结点孩子孩子(child)结点结点双亲双亲(parent)结点结点兄弟兄弟(sibling)结点结点具有同一双亲的结点具有同一双亲的结点三、树的基本术语三、树的基本术语ABCDEFGHIJKLM结点结点A的度:的度:3结点结点B的度:的度:2结点结点M的度:的度:0分支结点:分支结点:A,B,C,D,E,H叶结点:叶结点:K,L,F,G,M,I,J结点结点A的孩子:的孩子:B,C,D结点结点B的孩子:的孩子:E,F结点结点I的双亲:的双亲:D结
11、点结点L的双亲:的双亲:E结点结点B,C,D为兄弟为兄弟结点结点K,L为兄弟为兄弟计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6祖先祖先(ancestor)结点结点结点的祖先是从根到该结点所结点的祖先是从根到该结点所经分支上的所有结点经分支上的所有结点.子孙子孙(descendant)结点结点以某结点为根的子树中的任一以某结点为根的子树中的任一结点都为该结点的子孙结点都为该结点的子孙.结点的层次结点的层次(level)根结点的层数为根结点的层数
12、为1,其余结点,其余结点的层数为双亲结点的层数加的层数为双亲结点的层数加1树的高度树的高度(depth)树中结点的最大层数树中结点的最大层数树的度树的度(degree)树的基本术语树的基本术语(续续)ABCDEFGHIJKLM结点结点K的祖先:的祖先:A,B,E结点结点B的子孙:的子孙:E,F,K,L树的度:树的度:3树的高度:树的高度:4结点结点A的层次:的层次:1结点结点M的层次:的层次:4计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6n
13、n 有序树有序树子树的次序不能互换子树的次序不能互换n无序树无序树子树的次序可以互换子树的次序可以互换n森林(森林(Forest)m棵互不相交的树的集合棵互不相交的树的集合基本术语(续):基本术语(续):计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6树的运算分树的运算分3 3大类:大类:第一类:第一类:查找类查找类遍历遍历树中每个结点、求树的状态(如树高度、判树空)树中每个结点、求树的状态(如树高度、判树空)查找查找满足某种特定关系的结点满足某
14、种特定关系的结点,如查找根结点等如查找根结点等第二类,第二类,插入类插入类包括初始化空树、构造树、在树的当前结点上插入一个新结包括初始化空树、构造树、在树的当前结点上插入一个新结点等;点等;第三类,第三类,删除类删除类包括清空树、销毁树、删除树中结点。包括清空树、销毁树、删除树中结点。四、树的基本操作(四、树的基本操作(P118P118)计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6五、树的抽象数据类型定义五、树的抽象数据类型定义ADTTree
15、数据对象数据对象D:由由n个具有相同特性的元素构成的集合个具有相同特性的元素构成的集合数据关系数据关系R:若若D为空集,则称为空树为空集,则称为空树。否则否则:(1)在在D中存在唯一的称为根的数据元素中存在唯一的称为根的数据元素root;(2)当当n1时时,其余结点可分为其余结点可分为m(m0)个互不相交的有限集个互不相交的有限集T1,T2,Tm,其中每一棵子集本身又是一棵符合本定义的树其中每一棵子集本身又是一棵符合本定义的树,称为根称为根root的子树的子树.基本操作基本操作P:Root(T)/求树的根结点求树的根结点Value(T,cur_e)/求当前结点的元素值求当前结点的元素值Pare
16、nt(T,cur_e)/求当前结点的双亲结点求当前结点的双亲结点LeftChild(T,cur_e)/求当前结点的最左孩子求当前结点的最左孩子CreateTree(&T,definition)/构造树构造树InitTree(&T)/初始化置空树初始化置空树计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6TreeEmpty(T)/判定树是否为空树判定树是否为空树TreeDepth(T)/求树的深度求树的深度TraverseTree(T,Visit(
17、)/遍历遍历Assign(T,cur_e,value)/给当前结点赋值给当前结点赋值InsertChild(&T,&p,i,c)/将以将以c为根的树插入为结点为根的树插入为结点p的第的第i棵子树棵子树RightSibling(T,cur_e)/求当前结点的右兄弟求当前结点的右兄弟 ClearTree(&T)/清空树清空树DestroyTree(&T)/销毁树销毁树DeleteChild(&T,&p,i)/删除结点删除结点p的第的第i棵子树棵子树ADTTree计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInfo
18、rmationScience&TechnologyChap66.2 6.2 二叉树二叉树6.2.1二叉树的定义二叉树的定义 二叉树或为空树,或是由一个根结点加上两棵分别称为二叉树或为空树,或是由一个根结点加上两棵分别称为左子树左子树和和右子树右子树的、的、互不相交的互不相交的二叉树组成。二叉树组成。ABCDEFGHK根结点左子树右子树说明说明(1)二叉树中每个结点最多有两棵子树;二叉树每个)二叉树中每个结点最多有两棵子树;二叉树每个结点度小于等于结点度小于等于2;(2)左、右子树不能颠倒)左、右子树不能颠倒有序树;有序树;(3)二叉树是递归结构。)二叉树是递归结构。计算机与软件学院(计算机与软
19、件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6LRLR二叉树的五种基本形态二叉树的五种基本形态计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6问题:u1.只有两个结点的二叉树有几种不同的形态?2.只有只有3个结点的二叉树有几种不同形态?分别画出来。个结点的二叉树有几种不同形态?分别画出来。计算机与软件学院(计算机与软件学院(
20、SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6二叉树的基本操作二叉树的基本操作查找类查找类插入类插入类删除类删除类 Root(T);Value(T,e);Parent(T,e);LeftChild(T,e);RightChild(T,e);LeftSibling(T,e);RightSibling(T,e);BiTreeEmpty(T);BiTreeDepth(T);PreOrderTraverse(T,Visit();InOrderTraverse(T,Visit();Post
21、OrderTraverse(T,Visit();LevelOrderTraverse(T,Visit();InitBiTree(&T);Assign(T,&e,value);CreateBiTree(&T,definition);InsertChild(T,p,LR,c);ClearBiTree(&T);DestroyBiTree(&T);DeleteChild(T,p,LR);计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6性质性质1若二叉树的
22、层次从若二叉树的层次从1开始开始,则在二叉树的第则在二叉树的第i 层最多有层最多有2i-1 个结点。个结点。(i 1)证明用数学归纳法证明用数学归纳法性质性质2高度为高度为k 的二叉树最多有的二叉树最多有2k-1个结点。个结点。(k 1)证明用求等比级数前证明用求等比级数前k k项和的公式项和的公式 2 20 0+2+21 1+2+22 2+2+2k-1k-1=2 2k k-1-16.2.2二叉树的性质二叉树的性质计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&Technol
23、ogyChap6性质性质3对任何一棵二叉树对任何一棵二叉树,如果其如果其叶结点叶结点有有n0个个,度为度为2的的非叶结点非叶结点有有n2个个,则有则有n0n21证明:证明:1、结点总数为度为、结点总数为度为0的结点加上度为的结点加上度为1的结点再加上度的结点再加上度为为2的结点:的结点:n=n0+n1+n22、另一方面,二叉树中、另一方面,二叉树中1度结点有一个孩子,度结点有一个孩子,2度结点度结点有二个孩子,根结点不是任何结点的孩子,因此,结点有二个孩子,根结点不是任何结点的孩子,因此,结点总数为:总数为:n=n1+2n2+13、两式相减,得到:、两式相减,得到:n0=n2+1计算机与软件学
24、院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6定义定义1满二叉树满二叉树(FullBinaryTree)一棵深度为一棵深度为k且有且有2k-1个结点的二叉树个结点的二叉树。定义定义2完全二叉树完全二叉树(CompleteBinaryTree)若设二叉树的高度为若设二叉树的高度为h,则共有,则共有h层。除第层。除第h层外,其它各层层外,其它各层(1 h-1)的结点数都达到最大个的结点数都达到最大个数,第数,第h层从左向右连续有若干结点,这就是完层从左向右连续有
25、若干结点,这就是完全二叉树。全二叉树。定义两种特殊的二叉树:定义两种特殊的二叉树:计算机与软件学院(计算机与软件学院(SchoolofComputerandSoftware)NanjingUniversityofInformationScience&TechnologyChap6 A A G G F F E E D D C C B BK=3的满二叉树的满二叉树 A A C C B BK=2的满二叉树的满二叉树 A A E E D D C C B B完全二叉树完全二叉树 A A G G F F E E D D C C B B计算机与软件学院(计算机与软件学院(SchoolofComputeran
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构PPT教学课件-第六章 树和二叉树 数据结构 PPT 教学 课件 第六 二叉
限制150内