数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt

上传人:b****1 文档编号:14001744 上传时间:2022-10-16 格式:PPT 页数:115 大小:3.72MB
下载 相关 举报
数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt_第1页
第1页 / 共115页
数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt_第2页
第2页 / 共115页
数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt_第3页
第3页 / 共115页
数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt_第4页
第4页 / 共115页
数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt_第5页
第5页 / 共115页
点击查看更多>>
下载资源
资源描述

数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt

《数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt(115页珍藏版)》请在冰豆网上搜索。

数据结构与算法教学课件ppt作者王曙燕chapter6树和二叉树PPT课件下载推荐.ppt

,若D为空集,则称为空树。

否则:

(1)在D中存在唯一的称为根的数据元素root;

(2)当n1时,其余结点可分为m(m0)个互不相交的有限集T1,T2,Tm,其中每一个子集本身又是一棵符合本定义的树,称为根root的子树。

第6章树和二叉树,数据对象D:

D是具有相同特性的数据元素的集合。

5,例如:

第6章树和二叉树,A(B(E,F(K,L),C(G),D(H,I,J(M),T1,T3,T2,根,6.2树的概念,6,表示方法:

第6章树和二叉树,树型表示,6.2树的概念,7,表示方法:

第6章树和二叉树,文氏图表示,6.2树的概念,8,表示方法:

第6章树和二叉树,凹入表示,6.2树的概念,9,表示方法:

第6章树和二叉树,嵌套括号表示,a(b(d,e(i,j),c(g,h),6.2树的概念,10,有向树:

第6章树和二叉树,有确定的根;

树根和子树根之间为有向关系。

有序树:

子树之间存在确定的次序关系。

无序树:

子树之间不存在确定的次序关系。

6.2树的概念,11,树型结构和线性结构的结构特点,第6章树和二叉树,第一个数据元素(无前驱),根结点(无前驱),最后一个元素(无后继)。

多个叶子结点(无后继),其它数据元素(一个前驱、一个后继),其它数据元素(一个前驱、多个后继),6.2树的概念,12,第6章树和二叉树,基本术语,结点:

数据元素+若干指向子树的分支,结点的度:

分支的个数,树的度:

树中所有结点的度的最大值,叶子结点:

度为零的结点,分支结点:

度大于零的结点,(从根到结点的)路径:

由从根到该结点所经分支和结点构成。

6.2树的概念,13,数据结构,第6章树和二叉树,基本术语,孩子结点:

一个结点的直接后继,双亲结点:

一个结点的直接前驱,兄弟结点:

同一双亲结点的孩子结点之间互称。

堂兄弟、祖先结点、子孙结点,结点的层次:

假设根结点的层次为1,依次累加。

树的深度:

树中叶子结点所在的最大层次,森林:

是m(m0)棵互不相交的树的集合,6.2树的概念,14,第6章树和二叉树,基本操作,InitTree(Tree);

DestoryTree(Tree);

CreatTree(Tree);

TreeEmpty(Tree);

Root(Tree);

Parent(Tree,x);

FirstChild(Tree,x);

NextSibling(Tree,x);

InsertChild(Tree,p,Child);

DeleteChild(Tree,p,i);

6.2树的概念,15,第6章树和二叉树,定义:

满足以上两个条件的树型结构为二叉树。

每个结点的度都不大于2;

每个结点的孩子结点次序不能任意颠倒。

二叉树或为空树,或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。

A,根结点,左子树,右子树,6.2树的概念,16,6.3二叉树,第6章树和二叉树,形态:

5种,17,6.3二叉树,第6章树和二叉树,基本操作:

Initiate(bt);

Destory(bt);

Creat(bt);

Empty(bt);

Root(bt);

Parent(bt,x);

LeftChild(bt,x);

RithtChild(bt,x);

Traverse(bt);

Clear(bt);

18,6.3二叉树,第6章树和二叉树,重要性质:

在二叉树的第i层上至多有2i-1个结点。

用归纳法证明:

.当i=1层时,只有一个根结点:

2i-1=20=1;

.假设i=k时成立,即第k层上至多有2k-1个结点;

.那么第k+1层上最多有2k-12个,即2k个。

结论成立,证毕。

19,6.3二叉树,第6章树和二叉树,重要性质:

深度为k的二叉树上至多含2k-1个结点(k1)。

证明:

基于上一条性质,深度为k的二叉树上的结点数至多为,20+21+2k-1,=2k-1,20,6.3二叉树,第6章树和二叉树,重要性质:

对任何一棵二叉树,若它含有n0个叶子结点、n2个度为2的结点,则必存在关系式:

n0=n2+1。

设二叉树上结点总数n=n0+n1+n2,又二叉树上分支总数b=n1+2n2,而b=n-1=n0+n1+n2-1,由此,n0=n2+1,21,6.3二叉树,第6章树和二叉树,特殊的二叉树,满二叉树,完全二叉树,深度为k且含有2k-1个结点的二叉树。

树中所含的n个结点和满二叉树中编号为1至n的结点一一对应。

关系:

满二叉树必为完全二叉树,而完全二叉树不一定是满二叉树。

22,6.3二叉树,第6章树和二叉树,重要性质:

具有n个结点的完全二叉树的深度为log2n+1。

设完全二叉树的深度为k,则根据第二条性质得2k-1-1n2k-1,则2k-1n2k,即k-1log2nk,因为k只能是整数,因此,k=log2n+1。

23,6.3二叉树,第6章树和二叉树,重要性质:

若对含n个结点的完全二叉树从上到下且从左至右进行1至n的编号,则对完全二叉树中任意一个编号为i的结点:

(1)若i=1,则该结点是二叉树的根,无双亲,否则,编号为i/2的结点为其双亲结点;

(2)若2in,则该结点无左孩子,否则,编号为2i的结点为其左孩子结点;

(3)若2i+1n,则该结点无右孩子结点,否则,编号为2i+1的结点为其右孩子结点。

24,6.3二叉树,第6章树和二叉树,存储结构:

顺序存储结构,链式存储结构,25,6.3二叉树,第6章树和二叉树,存储结构:

顺序存储结构,是用一组连续的存储单元来存放二叉树的数据元素。

一维数组btn,数据结构与算法,26,root,6.3二叉树,第6章树和二叉树,存储结构:

链式存储结构:

二叉链表,结点结构:

typedefstructNodeDataTypedata;

structNode*lchild;

structNode*rchild;

BiTNode,*BiTree;

含有n个结点的二叉链表中有2n个指针域,n+1个空域。

27,6.3二叉树,第6章树和二叉树,存储结构:

三叉链表,结点结构:

root,28,6.4二叉树的遍历,第6章树和二叉树,遍历二叉树:

顺着某一条搜索路径访问二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一次。

“遍历”是任何类型均有的操作,对线性结构而言,只有一条搜索路径(因为每个结点均只有一个后继),故不需要另加讨论。

二叉树是非线性结构,每个结点有两个后继,存在如何遍历即按什么样的搜索路径遍历的问题,29,第6章树和二叉树,“二叉树”由三个基本单元组成:

根结点、左子树和右子树。

若能依次遍历这三部分,就遍历了整个二叉树。

DLR,DRL,LDR,RDL,LRD,RLD,先左后右,先右后左,设用L、D、R分别表示遍历左子树、访问根结点、遍历右子树,对“二叉树”而言,可以有?

种搜索路径:

6,6.4二叉树的遍历,30,第6章树和二叉树,先(根)序遍历的递归定义:

若二叉树为空树,则空操作;

否则,

(1)访问根结点;

(2)先序遍历左子树;

(3)先序遍历右子树。

A,B,D,G,C,E,F,先序遍历结果:

A,B,D,G,C,E,F,voidPreOrder(BiTreeroot)if(root!

=NULL)Visit(root-data);

PreOrder(root-LChild);

PreOrder(root-RChild);

6.4二叉树的遍历,31,第6章树和二叉树,中(根)序遍历的递归定义:

否则,

(1)中序遍历左子树;

(2)访问根结点;

(3)中序遍历右子树。

A,B,D,G,C,E,F,中序遍历结果:

A,B,D,G,C,E,F,voidInOrder(BiTreeroot)if(root!

=NULL)InOrder(root-LChild);

Visit(root-data);

InOrder(root-RChild);

6.4二叉树的遍历,32,6.3二叉树的遍历与线索化,第6章树和二叉树,后(根)序遍历的递归定义:

否则,

(1)后序遍历左子树;

(2)后序遍历右子树;

(3)访问根结点。

A,B,D,G,C,E,F,后序遍历结果:

A,B,D,G,C,E,F,voidPostOrder(BiTreeroot)if(root!

=NULL)PostOrder(root-LChild);

PostOrder(root-RChild);

33,第6章树和二叉树,练习,先序:

ABDEHICFJGK,中序:

DBEHIAFJCGK,后序:

DIHEBJFKGCA,6.4二叉树的遍历,34,第6章树和二叉树,举例:

先序:

-,+,a,*,b,-,c,d,/,e,f,中序:

a,+,b,*,c,-,d,-,e,/,f,后序:

a,b,c,d,-,*,+,e,f,/,-,前缀式(波兰式),中缀式(表达式),后缀式(逆波兰式),6.4二叉树的遍历,35,第6章树和二叉树,由遍历序列确定二叉树,由先序和中序序列恢复二叉树举例,先序序列:

ABCDEFG,中序序列:

CBDAEGF,A,A,左子树,右子树,A,B,B,B,C,C,C,D,D,D,E,E,E,F,F,F,G,G,G,6.4二叉树的遍历,36,6.3二叉树的遍历与线索化,第6章树和二叉树,由遍历序列确定二叉树,由中序和后序序列恢复二叉树,中序序列:

DCBGEAHFIJK,后序序列:

DCEGBFHKJIA,A,练习:

I,J,K,H,F,B,G,E,C,D,37,第6章树和二叉树,遍历算法应用:

遍历算法将走遍二叉树中的每一个结点,故输出二叉树中结点并无次序要求,因此可用任一种算法来完成。

voidPreOrder(BiTreeroot)if(root!

=NULL)printf(root-data);

PreOrder(root-RChild)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1