《树二叉树二叉树的遍历树森林与二叉树的转换树和森林的遍ppt课件.ppt》由会员分享,可在线阅读,更多相关《树二叉树二叉树的遍历树森林与二叉树的转换树和森林的遍ppt课件.ppt(126页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用n树树n二叉树二叉树n二叉树的遍历二叉树的遍历n树、森林与二叉树的转换树、森林与二叉树的转换n树和森林的遍历树和森林的遍历n树的应用树的应用第六章 树和二叉树Chapter 6 Tree and Binary Tree经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.1 树一、树的定义一、树的定义树是树是n(n0)个有限数据元素的集合。当)个有限数据元素的集合。当n=0时称时称这棵树
2、为空树;否则,任意一棵非空树必符合以下两这棵树为空树;否则,任意一棵非空树必符合以下两个条件:个条件:n树中有一个特殊的数据元素称为树的根结点,根结点树中有一个特殊的数据元素称为树的根结点,根结点没有前驱结点;没有前驱结点;n若若n1,除根结点外的其余结点可分为,除根结点外的其余结点可分为m(m0)个个互不相交的有限集合互不相交的有限集合T1,T2,T3,,Tm,其中每一个集,其中每一个集合合Ti本身又是一棵树,称之为根的子树。本身又是一棵树,称之为根的子树。ADCBEFGHI经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接
3、受服务的费用Tree逻辑结构n树的根结点没有前驱结点,除根结点外的所有树的根结点没有前驱结点,除根结点外的所有结点有且只有一个前驱结点。结点有且只有一个前驱结点。n树中所有结点可以有零个或多个后继结点。树中所有结点可以有零个或多个后继结点。分支关系、层次关系、一对多的非线性辑结构。二、树的基本术语二、树的基本术语(1)结点的度结点的度:结点所拥有的子树的个数。:结点所拥有的子树的个数。(2)叶子结点:叶子结点:度为度为0的结点。的结点。(3)分枝结点:分枝结点:度不为度不为0的结点。的结点。(4)树的度:树的度:树中各结点度的最大值称为该树的度。树中各结点度的最大值称为该树的度。(5)孩子、兄
4、弟、双亲:孩子、兄弟、双亲:树中一个结点的子树的根结点树中一个结点的子树的根结点称为这个结点的孩子。这个结点称为它的孩子结点称为这个结点的孩子。这个结点称为它的孩子结点的双亲。具有同一个双亲的孩子结点互为兄弟。的双亲。具有同一个双亲的孩子结点互为兄弟。(6)结点的层数:结点的层数:规定树的根结点的层数为规定树的根结点的层数为1,其余结点,其余结点的层数等于它的双亲结点的层数加的层数等于它的双亲结点的层数加1。(7)树的深度:树的深度:树中所有结点的最大层数称为树的深度。树中所有结点的最大层数称为树的深度。(8)有序树和无序树:有序树和无序树:如果一棵树中结点的各子树从左到如果一棵树中结点的各子
5、树从左到右是有次序的,即若交换某结点各子树的相对位置则右是有次序的,即若交换某结点各子树的相对位置则构成不同的树,称这棵树为有序树;否则为无序树。构成不同的树,称这棵树为有序树;否则为无序树。(9)森林:森林:零棵或有限棵不相交的树的集合称为森林。零棵或有限棵不相交的树的集合称为森林。ADCBEFGHI经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用4.树的基本操作树的基本操作1 1、初始化(、初始化(、初始化(、初始化(initiate(t)initiate(t))2 2、求指定结点所在树的根结点、求指定结点所
6、在树的根结点、求指定结点所在树的根结点、求指定结点所在树的根结点(root(x)(root(x)3 3、求指定结点的双亲结点、求指定结点的双亲结点、求指定结点的双亲结点、求指定结点的双亲结点(parent(t,x)(parent(t,x)4 4、求指定结点的某一孩子结点、求指定结点的某一孩子结点、求指定结点的某一孩子结点、求指定结点的某一孩子结点(child(t,x,i)(child(t,x,i)5 5、求指定结点的最右边兄弟结点、求指定结点的最右边兄弟结点、求指定结点的最右边兄弟结点、求指定结点的最右边兄弟结点(rightsibling(t,x)(rightsibling(t,x)6 6、将
7、一棵树插入到另一树的指定结点下作为它、将一棵树插入到另一树的指定结点下作为它、将一棵树插入到另一树的指定结点下作为它、将一棵树插入到另一树的指定结点下作为它 的子树的子树的子树的子树(insert(t,x,i,s)(insert(t,x,i,s)7 7、删除指定结点的某一子树、删除指定结点的某一子树、删除指定结点的某一子树、删除指定结点的某一子树delete(t,x,i)delete(t,x,i)8 8、树的遍历树的遍历树的遍历树的遍历(tranverse(t)(tranverse(t)遍历:按某种方式访问树中的每个结点,且每个遍历:按某种方式访问树中的每个结点,且每个遍历:按某种方式访问树中
8、的每个结点,且每个遍历:按某种方式访问树中的每个结点,且每个结点只被访问一次。结点只被访问一次。结点只被访问一次。结点只被访问一次。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用四、树的存储结构四、树的存储结构双亲表示法双亲表示法孩子表示法孩子表示法孩子兄弟表示法孩子兄弟表示法双亲孩子表示法双亲孩子表示法经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ABCDEFG0 A -11 B 02 C 03 D 04 E 2 5 F 26
9、 G 5序号序号data parent 1.双亲表示法双亲表示法 typedef struct elemtype data;int parent;nodetype;nodetype tMAXNODE;data parent#define MAXNODE 100结点结构结点结构:C语言的类型描述语言的类型描述:typedef struct elemtype data;int parent;int son;int next;nodetype;特点:便于实现特点:便于实现parent(t,x)和和root(x)操操作作,难于实现难于实现child(t,x,i)和和rightsibling(t,x)操
10、作操作改进后的结构改进后的结构经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用2.孩子表示法(多重链表法)孩子表示法(多重链表法)ABCDEFGHIJABC DE F G H I J两种方法:两种方法:结点的指针域的个数结点的指针域的个数=树的度。树的度。同构型同构型结点的指针域的个数结点的指针域的个数=结点的度结点的度异构型异构型同构型同构型经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ABCDEFGHIJtypedef str
11、uct TreeNodetypedef struct TreeNodetypedef struct TreeNodetypedef struct TreeNode int data;int data;int data;int data;struct TreeNdoe*SonMAXSON;struct TreeNdoe*SonMAXSON;struct TreeNdoe*SonMAXSON;struct TreeNdoe*SonMAXSON;nodetype;nodetype;nodetype;nodetype;异构型异构型孩子表示法孩子表示法 c c语言描述语言描述(同构型同构型)3.双亲双亲
12、-孩子表示法孩子表示法ABCDEFGHIJJ 4A 0B 1C 1D 1E 2F 2G 3H 4I 4234891056712345678910序号 data parent将双亲表示与孩子将双亲表示与孩子表示结合起来表示结合起来经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用 AB C E D F G4.孩子兄弟表示法(二重链表法)孩子兄弟表示法(二重链表法)typedefstructtreenodeelemtypedata;structtreenode*son;structtreenode*next;nodet
13、ype;BDACEFG经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用 6.2 二叉树一、二叉树的基本概念一、二叉树的基本概念(1)定义:二叉树是一个由定义:二叉树是一个由n(n0)个有限元素构成的集)个有限元素构成的集合,这个集合或者为空,或者合,这个集合或者为空,或者是由一个称为根的元素及两个是由一个称为根的元素及两个互不相交的、分别被称为左子互不相交的、分别被称为左子树和右子树的二叉树组成。当树和右子树的二叉树组成。当二叉树中元素个数二叉树中元素个数n=0时,称时,称为空二叉树。为空二叉树。n在二叉树中,一
14、个元素也称作在二叉树中,一个元素也称作一个结点。一个结点。ABGDCHEF二叉树经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用二叉树的五种不同形态二叉树的五种不同形态注意:注意:二叉树与树的区别二叉树与树的区别:(1)二叉树是一个有序树,而树二叉树是一个有序树,而树是无序树。是无序树。(2)二叉树的度小于等于二叉树的度小于等于2。=树经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用二叉树(4)特殊的二叉树n满二叉树一棵深度为一棵深
15、度为h且有且有2h-1个结点个结点的二叉树。的二叉树。对树中结点按从上到下、从左到对树中结点按从上到下、从左到右的顺序进行编号。右的顺序进行编号。abdcefhijgklmno8910 11121314 154567231经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用n完全二叉树ACGFBDEHIJ除第除第除第除第h h层外,其它各层层外,其它各层层外,其它各层层外,其它各层(1(1 h h-1-1)的结点数都达到的结点数都达到的结点数都达到的结点数都达到最大个数,第最大个数,第最大个数,第最大个数,第h h层
16、从右向层从右向层从右向层从右向左连续缺若干结点,这左连续缺若干结点,这左连续缺若干结点,这左连续缺若干结点,这就是完全二叉树。就是完全二叉树。就是完全二叉树。就是完全二叉树。若二叉树的深度为若二叉树的深度为若二叉树的深度为若二叉树的深度为h h,且共有,且共有,且共有,且共有n n个结点。对树中结个结点。对树中结个结点。对树中结个结点。对树中结点点点点按从上到下、从左到右的顺序进行编号,若编按从上到下、从左到右的顺序进行编号,若编按从上到下、从左到右的顺序进行编号,若编按从上到下、从左到右的顺序进行编号,若编号为号为号为号为i(1in)i(1in)的结点与满二叉树编号为的结点与满二叉树编号为的
17、结点与满二叉树编号为的结点与满二叉树编号为i i的结点的结点的结点的结点位置相同,则此树称为完全二叉树。位置相同,则此树称为完全二叉树。位置相同,则此树称为完全二叉树。位置相同,则此树称为完全二叉树。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用显然,一颗满二叉树一定是一颗完全二叉树显然,一颗满二叉树一定是一颗完全二叉树1234567891011234567891非完全二叉树非完全二叉树非完全二叉树非完全二叉树经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购
18、买商品的价款或接受服务的费用n二叉排序树45628849181230302582若为非空二叉树,根若为非空二叉树,根结点的左子树所有结结点的左子树所有结点的关键字值都小于点的关键字值都小于根结点关键字值,右根结点关键字值,右子树所有结点的关键子树所有结点的关键字值都大于或等于根字值都大于或等于根结点关键字值。左子结点关键字值。左子树和右子树又分别是树和右子树又分别是一棵二叉排序树。一棵二叉排序树。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用n平衡二叉树平衡二叉树ACEFBD平衡因子:二叉树任意结点的左子树深度
19、减去右子树平衡因子:二叉树任意结点的左子树深度减去右子树深度的差值,为此结点的平衡因子。深度的差值,为此结点的平衡因子。平衡二叉树:二叉树中每个结点的平衡因子的绝对值平衡二叉树:二叉树中每个结点的平衡因子的绝对值都不大于都不大于1,则称这棵二叉树为平衡二叉树,则称这棵二叉树为平衡二叉树.2345691平衡二叉树平衡二叉树非平衡二叉树非平衡二叉树经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用性质性质性质性质1 1 若二叉树的层次从若二叉树的层次从若二叉树的层次从若二叉树的层次从1 1开始开始开始开始,则在二叉树的
20、则在二叉树的则在二叉树的则在二叉树的 第第第第 i i 层最多有层最多有层最多有层最多有 2 2i-1 i-1 个结点。个结点。个结点。个结点。(i i 1)1)二、二、二叉树的性质二叉树的性质证明:证明:i=1 i=1 时,有时,有2 2i-1 i-1 =2 20 0=1=1,成立,成立假定假定 :i=k i=k 时性质成立;即有时性质成立;即有2 2k-1k-1个结点个结点.当当 i=k+1 i=k+1 时,第时,第k+1k+1的结点至多是第的结点至多是第k k层结点的层结点的两倍,即总的结点个数至多为两倍,即总的结点个数至多为2222k-1 k-1=2 2k k故命题成立故命题成立经营者
21、提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用性质性质性质性质2 2 高度为高度为高度为高度为k k的二叉树最多有的二叉树最多有的二叉树最多有的二叉树最多有 2 2k k-1-1个结点个结点个结点个结点.(.(k k 1)1)证明:仅当每一层都含有最大结点数时,二叉树证明:仅当每一层都含有最大结点数时,二叉树的结点数最多,利用性质的结点数最多,利用性质1 1可得二叉树的结点数可得二叉树的结点数至多为:至多为:2 20 0+2 21 1+2 22 2+2 23 3+2 2k-1 k-1=2 2k k 1 1 经营者提供
22、商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用性质性质性质性质3 3 对任何一棵二叉树对任何一棵二叉树对任何一棵二叉树对任何一棵二叉树,如果其叶结点个数为如果其叶结点个数为如果其叶结点个数为如果其叶结点个数为 n n0 0,度为度为度为度为2 2的非叶结点个数为的非叶结点个数为的非叶结点个数为的非叶结点个数为 n n2 2,则有则有则有则有 n n0 0n n2 21 1证明:证明:1 1、结点总数为度为、结点总数为度为0 0的结点加上度为的结点加上度为1 1的结点再加上度的结点再加上度 为为2 2的结点:的结点:n=n
23、n=n0 0+n+n1 1+n+n2 22 2、另一方面,二叉树中一度结点有一个孩子,二、另一方面,二叉树中一度结点有一个孩子,二 度结度结 点有二个孩子,根结点不是任何结点的孩子,因此,点有二个孩子,根结点不是任何结点的孩子,因此,结点总数为:结点总数为:n=n n=n1 1+2n+2n2 2+1+13 3、两式相减,得到:、两式相减,得到:n n0 0=n=n2 2+1 +1 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用性质性质4 具有具有n个结点的完全二叉树的高度个结点的完全二叉树的高度 为为 log2
24、n +1证明:设完全二叉树的高度为证明:设完全二叉树的高度为h h,则有,则有 2 2h-1h-1-1 -1 n n 2 2h h-1 -1 2 2h-1h-1=n n 2 2h h 取对数取对数 h h 1 log 1 log2 2(n n)1,1,则则则则 i i 的双亲为的双亲为的双亲为的双亲为 i i/2/2 (i 1)i 1)/2/2 )n n 若若若若2*2*i i=n)n),i i无无无无左孩子;左孩子;左孩子;左孩子;n n 若若若若2*2*i i+1=+1+1 n)n),i i无无无无右孩子;右孩子;右孩子;右孩子;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加
25、赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用四、二叉树抽象数据类型四、二叉树抽象数据类型n数据集合:结点集合数据集合:结点集合n操作集合:创建二叉树操作集合:创建二叉树左插入结点左插入结点右插入结点右插入结点左删除子树左删除子树右删除子树右删除子树遍历二叉树遍历二叉树一、二叉树的存储结构1.顺序存储结构ACGFBDEHIJ0123456789ABCDEFG HIJ6.3二叉树的设计和实现二叉树的设计和实现完全二叉树的顺序存储完全二叉树的顺序存储经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的
26、费用n顺序存储结构ACBGHDEF0123456789 10 11 12 13ABCDEFGH非完全二叉树的顺序存储非完全二叉树的顺序存储经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用 单支树单支树由于一般二叉树必须仿照完全二叉树那样存由于一般二叉树必须仿照完全二叉树那样存储,可能会浪费很多存储空间,单支树就是储,可能会浪费很多存储空间,单支树就是一个极端情况。一个极端情况。31121788493112178849经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费
27、者购买商品的价款或接受服务的费用ABGDCHEFBDGCFEHAbt2.链式存储结构左孩子右孩子数据结点结构typedefstructnodeDataTypedata;structnode*lchild;structnode*rchild;BiTreeNode;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用二、二、二叉链表存储结构的二叉树操作实现二叉链表存储结构的二叉树操作实现1.初始化算法初始化算法(创建带头结点的空二叉树创建带头结点的空二叉树)intInitiate(BiTreeNode*bt)if(*bt
28、=(BiTreeNode*)malloc(sizeof(BiTreeNode)=NULL)return0;(*bt)-lchild=NULL;(*bt)-rchild=NULL;return1;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用n2.二叉树的创建x117CBDG117C117ClbtCFEH10061006rbt147Ep117C1006经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用TreeBiTreeNode*Cr
29、eate(DataTypex,BiTreeNode*lbt,BiTreeNode*rbt)BiTreeNode*p;if(p=(BiTreeNode*)malloc(sizeof(BiTreeNode)=NULL)returnNULL;p-data=x;p-lchild=lbt;p-rchild=rbt;returnp;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用btCFDHAB*ParentE132B3.二叉树的插入147EpxNULL132B147EBiTreeNode*InsertL(BiTreeNod
30、e*Parent,DataTypex)BiTreeNode*p;if(Parent=NULL)printf(“n插入出错!插入出错!”);returnNULL;if(p=(BiTreeNode*)malloc(sizeof(BiTreeNode)=NULL)returnNULL;p-data=x;p-lchild=Parent-lchild;p-rchild=NULL;Parent-lchild=p;returnp;将结点将结点x x插入到结点插入到结点parentparent的右孩子处的右孩子处原理同上。自学原理同上。自学经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到
31、的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用btCFDHAB*ParentE132BGIn4.二叉树的子树删除pNULL132BBiTreeNode*DeleteL(BiTreeNode*Parent)TREENODE*p;if(Parent=NULL|Parent-lchild=NULL)printf(“n删除出错!删除出错!”);returnNULL;p=Parent-lchild;Destroy(&p);Parent-lchild=NULL;returnParent;删除二叉树删除二叉树btbt中结点中结点parentparent的右子树,原理同上,自学的右子树,原理同上
32、,自学经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用三、二叉排序树的生成三、二叉排序树的生成生成一棵二叉排序树生成一棵二叉排序树,过程如下过程如下:若二叉排序树为空,则令待插结点为根结点若二叉排序树为空,则令待插结点为根结点,若二叉排序树非空,则比较待插结点若二叉排序树非空,则比较待插结点(k1)和根结和根结点点(k2)的数据值。若的数据值。若k1k2,则将其插入到左子树中;则将其插入到左子树中;否则,将其插入到右子树中否则,将其插入到右子树中.结点插入二叉排序树的左、右子树过程同上结点插入二叉排序树的左、右子
33、树过程同上.例:将序列15,10,18,2,11,8,16,25,11构成一棵二叉排序树,过程:1510182118162511课堂练习课堂练习经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用二叉排序树生成算法步骤(非递归)二叉排序树生成算法步骤(非递归)k1,k2,k3,kn1.K1应为二叉排序树的根;应为二叉排序树的根;2.若若k2k1则则k2所在结点应插入到所在结点应插入到k1的左子树,的左子树,否则,插入到否则,插入到k1的的右子树;右子树;3.读入读入ki若若kik1,则进入左子树,否则,进则进入左子树
34、,否则,进入右子树,继续与子树之根比较。直到某结入右子树,继续与子树之根比较。直到某结点点kj,若有若有ki=kj且且结点结点kj的的右子树为空,则结点右子树为空,则结点ki插入到结点插入到结点kj的的右子树。右子树。4.若若i=n继续执行第继续执行第3步。步。二叉排序树生成算法描述二叉排序树生成算法描述main()intx;TREENODE*bt,*p,*q;printf(“inputroot”);scanf(“%d”,&x);p=create(x,NULL,NULL);bt=p;scanf(“%d”,&x);while(x!=-1)p=bt;q=p;while(q!=NULL)p=q;if
35、(xdata)q=p-lchild;elseq=p-rchild;if(xdata)InsertL(p,x);elseInsertR(p,x);scanf(“%d”,&x);经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用6.4 二叉树的遍历一、二叉树的遍历一、二叉树的遍历二叉树的遍历是指按照某种顺序访问二叉树中二叉树的遍历是指按照某种顺序访问二叉树中的每个结点,使每个结点被访问一次且只被访问的每个结点,使每个结点被访问一次且只被访问一次。一次。前序遍历前序遍历中序遍历中序遍历后序遍历后序遍历层序遍历层序遍历注意
36、:注意:这里的这里的“前、中、后、层前、中、后、层”指的是对根结点指的是对根结点“前、中、后、前、中、后、层层”顺序访问。顺序访问。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用BGDHEBDGEH1.前(先)序遍历(DLR)ABGDCHEFACFGHEADBGEHFC经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用前序遍历算法前序遍历算法若二叉树为空,遍历结束。否则,若二叉树为空,遍历结束。否则,(1)访问根结点;)访问根结点;
37、(2)前序遍历根结点的左子树;)前序遍历根结点的左子树;(3)前序遍历根结点的右子树。)前序遍历根结点的右子树。voidpreorder(BiTreeNode*bt)if(bt=NULL)return;printf(“%d”,bt-data);if(bt-lchild!=NULL)preorder(bt-lchild);if(bt-rchild!=NULL)preorder(bt-rchild);经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if
38、(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)
39、Preorder(prchild);ACBGHDEFP-A经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-A经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价
40、款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-A经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plch
41、ild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-AB经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-AB经营者提供商品或者
42、服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-AB经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENO
43、DE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-ABD经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prch
44、ild!=NULL)Preorder(prchild);ACBGHDEFP-ABDNULL经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-ABD经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失
45、,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-ABD经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf
46、(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-ABDG经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild)
47、;ACBGHDEFP-ABDGNULL经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-ABDGNULLNULL经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的
48、价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-ABDGNULL经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata)
49、;if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-ABDG经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-A
50、BDG经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void Preorder(TREENODE*p)if(p=NULL)return;printf(“%c”,pdata);if(plchild!=NULL)Preorder(plchild);if(prchild!=NULL)Preorder(prchild);ACBGHDEFP-ABDGC经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用递归前序遍历算法Void