第6章树和二叉树ppt课件.ppt
《第6章树和二叉树ppt课件.ppt》由会员分享,可在线阅读,更多相关《第6章树和二叉树ppt课件.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物主要内容YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物一、树的定义和基本术语1 1、树的定义(教材、树的定义(教材P118P118)树是树是n n(n0n0)个结点的有限集合。)个结点的有限集合。n=0n=0时称为空树。时称为空树。在任意一颗非空树中在任意一颗非空树中:(1 1)有且仅有一个特定的结点被称为根(有且仅有一个特定的结点被称为根(R
2、ootRoot)的结点;)的结点;(2 2)当)当n1n1时,其余结点被分成时,其余结点被分成m m(m0m0)个)个互不相交的有限互不相交的有限集集T1T1,T2T2,.,TmTm,其中,其中每一集合本身又是一棵树每一集合本身又是一棵树,并且,并且成为根的子树(成为根的子树(SubTreeSubTree)。)。树的定义是一个递归树的定义是一个递归YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ABCDEFGHIJMKL树根树根例如例如: :T1T2T3YL-2011我吓了一跳,蝎子是多么丑恶
3、和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物结点结点: :结点的度结点的度: :树的度树的度: :叶子结点叶子结点: :分支结点分支结点: :数据元素数据元素+ +若干指向子树的分支若干指向子树的分支分支的个数分支的个数树中所有结点的度的最大值树中所有结点的度的最大值度为零的结点度为零的结点度大于零的结点度大于零的结点DHIJM2 2、基本术语、基本术语(教材(教材P120P120)YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生
4、物孩子孩子: :结点子树的根结点子树的根双亲结点、兄弟结点、堂兄弟双亲结点、兄弟结点、堂兄弟祖先结点、子孙结点祖先结点、子孙结点结点的层次结点的层次: :树的深度:树的深度:ABCDEFGHIJMKL 假设某结点在第假设某结点在第L L层层, ,则其子树的则其子树的根就在第根就在第L+1L+1层层树中叶子结点所在的最大层次树中叶子结点所在的最大层次第第1 1层层第第2 2层层第第3 3层层第第4 4层层YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物任何一棵非空树是一个二元组任何一棵非空树是一
5、个二元组 Tree = Tree = (rootroot,F F)其中:其中:root root 被称为根结点,被称为根结点,F F 被称为子树森林被称为子树森林森林:是森林:是m m(m0m0)棵互不相交的树的集合)棵互不相交的树的集合ArootBCDEFGHIJMKLF有序树、无序树:有序树、无序树: 如果将树中结点的各如果将树中结点的各子树子树看成从左到右是看成从左到右是有次序有次序的(即的(即不能互换),则称该树为不能互换),则称该树为有序有序树树,否则称为无序树。,否则称为无序树。YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到
6、愉快,证实我的猜测没有错:表里边有一个活的生物线性结构线性结构树型结构树型结构第一个数据元素第一个数据元素 ( (无前驱无前驱) ) 根结点根结点 ( (无前驱无前驱) )最后一个数据元素最后一个数据元素 ( (无后继无后继) )多个叶子结点多个叶子结点 ( (无后继无后继) )其它数据元素其它数据元素( (一个前驱、一个前驱、 一个后继一个后继) )其它数据元素其它数据元素( (一个前驱、一个前驱、 多个后继多个后继) )YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ABCDEFGHK根结
7、点根结点左子树左子树右子树右子树二、二叉树1 1、二叉树的定义(教材、二叉树的定义(教材P121P121)二叉树是另一种树形结构。它与树形结构的区别是:二叉树是另一种树形结构。它与树形结构的区别是: (1 1)每个结点最多有两棵子树;)每个结点最多有两棵子树; (2 2)子树有左右之分)子树有左右之分YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 二叉树是二叉树是n n(n0n0)个结点的有限)个结点的有限集合。当集合。当n=0n=0时,称为空二叉树;当时,称为空二叉树;当n0n0时,时,有
8、且仅有一个结点为二叉树的根,有且仅有一个结点为二叉树的根,其余结点被分成两个互不相交的子集其余结点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集,一个作为左子集,另一个作为右子集,每个子集又是一个二叉树每个子集又是一个二叉树。YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物二叉树的五种基本形态:二叉树的五种基本形态:N空树空树只含根结点只含根结点NNNLRR右子树为空树右子树为空树L左子树为空树左子树为空树左右子树均左右子树均不为空树不为空树YL-2011我吓了一跳,蝎子是多么丑恶
9、和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物2 2、特殊二叉树、特殊二叉树(1 1)斜树)斜树 所有的结点都只有左子树的二叉树叫左所有的结点都只有左子树的二叉树叫左斜树;所有的结点都只有右子树的二叉树叫斜树;所有的结点都只有右子树的二叉树叫右斜树。这两者统称为斜树。右斜树。这两者统称为斜树。(2 2)满二叉树(教材)满二叉树(教材P124P124) 在一颗二叉树中,如果所有分支都存在左在一颗二叉树中,如果所有分支都存在左子树和右子树,并且所有叶子都在同一层上,子树和右子树,并且所有叶子都在同一层上,这样的二叉树成为满二叉树。这样
10、的二叉树成为满二叉树。YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物(3 3)完全二叉树完全二叉树 (教材(教材P124P124) 树中所含的树中所含的 n n 个个结点和满二叉树中编号结点和满二叉树中编号为为 1 1 至至 n n 的结点一一的结点一一对应。对应。123456789 10 11 12 13 14 15123456789 10YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物
11、性质性质 1 1:在二叉树的第在二叉树的第 i i 层上至多有层上至多有2 2i i-1 -1 个结点。个结点。(i1)(i1)3 3、二叉树的性质、二叉树的性质 (重点内容,教材(重点内容,教材P123-124P123-124) 性质性质 2 2 :深度为深度为 k k 的二叉树上至多含的二叉树上至多含 2k-1 2k-1 个结点(个结点(k1k1)。)。注意:性质注意:性质1 1、2 2的区别的区别例如,高度为例如,高度为4 4的二叉树,第的二叉树,第4 4层的最大结点数层的最大结点数为为 ,总结点数最多为,总结点数最多为 。 815YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为
12、什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 性质性质 3 3 :对任何一棵二叉树,若它含有对任何一棵二叉树,若它含有n n0 0 个叶子结点、个叶子结点、n n2 2 个个度为度为 2 2 的结点,则必存在关系式:的结点,则必存在关系式:n n0 0 = n= n2 2+1+1。123456789 10 性质性质 4 4 :具有具有 n n 个结点的完全二叉树的深度为个结点的完全二叉树的深度为 loglog2 2n n +1 +1 。YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,
13、证实我的猜测没有错:表里边有一个活的生物 性质性质 5 5 :若对含若对含 n n 个结点的完全二叉树从上到下且从左至右进行个结点的完全二叉树从上到下且从左至右进行 1 1 至至 n n 的编号,则对完全二叉树中任意一个编号为的编号,则对完全二叉树中任意一个编号为 i i 的结点:的结点:(1) (1) 若若 i=1i=1,则该结点是二叉树的根,无双亲,否则,编号为,则该结点是二叉树的根,无双亲,否则,编号为 i/2i/2 的结点为其双亲结点;的结点为其双亲结点;123456789 10(2) (2) 若若 2in2in,则该结点无左孩子,否则,编号为,则该结点无左孩子,否则,编号为 2i 2
14、i 的结点的结点为其左孩子结点;为其左孩子结点;(3) (3) 若若 2i+1n2i+1n,则该结点无右孩子结点,否则,编号为,则该结点无右孩子结点,否则,编号为2i+1 2i+1 的结点为其右孩子结点。的结点为其右孩子结点。YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物(1 1) 顺序存储结构顺序存储结构4 4、二叉树的存储结构、二叉树的存储结构 用一组连续的存储单元按照完全二叉树的每个结点编用一组连续的存储单元按照完全二叉树的每个结点编号的顺序存放结点内容。号的顺序存放结点内容。0 1
15、2 3 4 5 6 7 81 2 3 4 5 6 7 884 5 6 72 31YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物例如例如: :ABCDEF A B D C E F 0 1 2 3 4 5 6 7 8 9 10 11 12 131401326YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ADEBCF rootrootlchild data rchildlchild data r
16、child结点结构结点结构: :-二叉链表二叉链表(2 2)二叉树的链式存储表示)二叉树的链式存储表示YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物typedef struct BiTNode / typedef struct BiTNode / 结点结构结点结构 TElemType data;TElemType data; struct BiTNode struct BiTNode * *lchild, lchild, * *rchild; rchild; / / 左右孩子指针左右孩子指针
17、 BiTNode, BiTNode, * *BiTree;BiTree;lchild data rchildlchild data rchild结点结构结点结构: :C C 语言的类型描述如下语言的类型描述如下: :(教材(教材P127P127)YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ADEBCF rootroot -三叉链表三叉链表parent lchild data rchildparent lchild data rchild结点结构结点结构: :YL-2011我吓了一跳,蝎子是
18、多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 typedef struct TriTNode / typedef struct TriTNode / 结点结构结点结构 TElemType data;TElemType data; struct TriTNode struct TriTNode * *lchild, lchild, * *rchild; rchild; / / 左右孩子指针左右孩子指针 struct TriTNode struct TriTNode * *parent; /parent; /双亲指针双亲指针
19、 TriTNode, TriTNode, * *TriTree;TriTree;parent lchild data rchildparent lchild data rchild结点结构结点结构: :C C 语言的类型描述如下语言的类型描述如下: :YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物三、二叉树的遍历 所谓遍历二叉树就是所谓遍历二叉树就是按某种顺序访问按某种顺序访问二二叉树中的叉树中的每个结点一次且仅一次每个结点一次且仅一次的过程。这的过程。这里的里的访问可以是输出、比较、更新、
20、查看元访问可以是输出、比较、更新、查看元素内容等等各种操作。素内容等等各种操作。YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物1 1、按层次遍历二叉树、按层次遍历二叉树 实现方法为从上层到下层,每层中从左侧到实现方法为从上层到下层,每层中从左侧到右侧依次访问每个结点。右侧依次访问每个结点。 按层次遍历该二叉树的按层次遍历该二叉树的序列为:序列为:ABCDEFGHKKABE CFDGHYL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,
21、证实我的猜测没有错:表里边有一个活的生物2 2、按根、左子树和右子树三个部分进行遍历、按根、左子树和右子树三个部分进行遍历 二叉树的遍历方式存在六种可能:二叉树的遍历方式存在六种可能: DLRDLR(根左右)、(根左右)、LDRLDR(左根右)、(左根右)、LRDLRD(左右根)(左右根) DRLDRL(根右左)、(根右左)、RDLRDL(右根左)、(右根左)、RLDRLD(右左根)(右左根) 如果限定先左后右,则只有前三种方式,即如果限定先左后右,则只有前三种方式,即DLRDLR(称为先序遍历)、(称为先序遍历)、LDRLDR(称为中序遍历)(称为中序遍历)和和LRDLRD(称为后序遍历)。
22、(称为后序遍历)。YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ABCDEFGD L RTD L RD L RABED L RD L RDLRDLRCFDG先序遍历结果先序遍历结果: :A BC D E F GT(1 1)DLRDLR先序遍历先序遍历YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ABCDEFGL D RTL D RL D RABEL D RL D RLDRLDRCFDG中序
23、遍历结果中序遍历结果: :B DC A G F ET(2 2)LDRLDR中序遍历中序遍历YL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物(3 3)LRDLRD后序遍历后序遍历ABCDEFGT后序遍历结果后序遍历结果: :DCBGFEAYL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ABCDEFGHK练习:分别写出先序、中序、后序遍历的结果。练习:分别写出先序、中序、后序遍历的结果。先序序列先
24、序序列: : A B C D E F G H K A B C D E F G H K中序序列中序序列: : B D C A H G K F E B D C A H G K F E后序序列后序序列: : D C B H K G F E A D C B H K G F E AYL-2011我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 【问题【问题1 1】若已知二叉树结点的先序序列和中序序若已知二叉树结点的先序序列和中序序列,能否确定这棵二叉树呢?这样确定的二叉树是列,能否确定这棵二叉树呢?这样确定的二叉树是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 ppt 课件
限制150内