计算机软件-数据结构.ppt.ppt
二叉树;
; 6.1 .1 树型结构实例
1.家族树 ;2.书的目录结构 ; 6.1 .2 树的定义
1.树的定义
树(Tree)是n (n≥0)个结点的有限集(记为T),T为空时称为空树,否则它满足以下两个条件:
(1) 有且仅有一个结点没有前驱,称该结点为根结点(Root);
(2) 除根结点以外,其余结点可分为m(m≥0)个互不相交的有限集合T0,Tl,…,Tm-1。其中每个集合又构成一棵树,树T0,Tl ,…,Tm-1被称为根结点的子树(Subree)。每棵子树的根结点有且仅有一个直接前驱,但可以有0个或多个后继。
树的逻辑结构表示数据之间的关系是一对多,或者多对一的关系。它的结构特点具有明显的层次关系,是一种十分重要的非线性的数据结构。 ;图6-3 树的示例 ; 6.2.1二叉树的定义
二叉树(Binary Tree)是另一种重要的树型结构。是度为2的有序树,它的特点是每个结点至多有两棵子树。和树结构的定义类似,二叉树的定义也可以用递归形式给出。
1.二叉树的递归定义
二叉树(BinaryTree)是n(n≥0)个结点的有限集。它或者是空集(n=0),或者同时满足以下两个条件:
(1) 有且仅有一个根结点;
(2) 其余的结点分成两棵互不相交的左子树和右子树。 ; 二叉树与树有区别:树至少应有一个结点,而二叉树可以为空;树的子树没有顺序,但如果二叉树的根结点只有一棵子树,必须明确区分它是左子树还是右子树,因为两者将构成不同形态的二叉树。因此,二叉树不是树的特例。它们是两种不同的数据结构。
二叉树有5种基本形态:;两种特殊形态的二叉树:满二叉树和完全二叉树。
(1) 满二叉树(FullBinaryTree)?
深度为k,且有2k-1个结点的二叉树。
特点:(1)每一层上结点数都达到最大
(2)度为1的结点n1=0,树叶都在最下一层上。
结点层序编号方法:从根结点起从上到下逐层(层内从左到右)对二叉树的结点进行连续编号。; (2) 完全二叉树(Complete BinaryTree)?
深度为k,结点数为n的二叉树,当且仅当每个结点的编号都与相同深度的满二叉树中从1到n的结点一一对应时,称为完全二叉树。;1;6.3.1遍历二叉树
在二叉树的一些应用中,常常要求在树中查找具有某种特征的结点,或者对树中全部结点逐一进行某种处理。这就引入了遍历二叉树的问题,即如何按某条搜索路径访问树中的每一个结点,使得每一个结点仅切仅被访问一次。
遍历二叉树:指按一定的规律对二叉树的每个结点,访问且仅访问一次的处理过程。
遍历对线性结构是容易解决的。而二叉树是非线性的,因而需要寻找一种规律,使二叉树上的结点能排列在一个线性队列上,从而便于遍历。 ; 访问是一种抽象操作,是对结点的某种处理,例如可以是求结点的度、或层次、打印结点的信息,或做其他任何工作。
一次遍历后,使树中结点的非线性排列,按访问的先后顺序变为某种线性排列。
遍历的次序:假如以L、D、R分别表示遍历左子树、遍历根结点和遍历右子树,遍历整个二叉树则有DLR、LDR、LRD、DRL、RDL、RLD六种遍历方案。若规定先左后右,则只有前三种情况,分别规定为:
DLR——先(根)序遍历,
LDR——中(根)序遍历,
LRD——后(根)序遍历。
1.遍历方案
LDR 中序遍历; LRD 后序遍历; DLR 先序遍历;1)中序遍历二叉树
算法思想:
若二叉树非空,则:
1)中序遍历左子树
2)访问根结点
3)中序遍历右子树;例:表达式 a+b ×(c-d)-e/f
原创力文档

文档评论(0)