数据结构预算法第七章树harc.pptx
《数据结构预算法第七章树harc.pptx》由会员分享,可在线阅读,更多相关《数据结构预算法第七章树harc.pptx(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章第七章 树和二叉树树和二叉树 树形结构是一种重要的非线性结构,在计算机科学树形结构是一种重要的非线性结构,在计算机科学中有着广泛的应用。中有着广泛的应用。7.1 7.1 树的定义和术语树的定义和术语7.1.1 树的定义 树(tree)是n(n0)个结点的有限集。在一棵非空树中:(1)有且仅有一个特定的结点,称为根(root)(根结点无前驱结点);(2)当n1时,除根结点之外的其余结点可分为m(m0)个互不相交的有限集(T1,T2,Tm),其中每一集合本身又是一棵树,并且称为根的子树(subtree)。举举 例例v例71 (a)只有根结点的树 (b)一般的树 (b)中A为根结点,其余结点分
2、成三个互不相交的子集:T1=B,E,F,K,L,T2=C,G,T3=D,H,I,J而T1,T2,T3本身又都是只有一个根结点的树。ALKEFGHIJDCBAM7.1.2 7.1.2 基本术语基本术语:(1)结点:包含一个数据元素及若干指向其子树的分支(2)结点的度:结点拥有子树数目称为结点的度。如图7-1-1的(b)中,A的度为3;C的度为1;M的度为0。(3)叶子(或终端)结点:度为零的结点。(4)分支结点(或非终端结点):除根结点外度不为零的结点,也称为内部结点。(5)树的度:树内各结点的度的最大值。(6)孩子:结点的子树的根称为该结点的孩子。如图7-1-1的(b)中,D为A的子树T3的根
3、,则D是A的孩子。(7)双亲:和孩子定义相应地该结点称为孩子的双亲。如图7-1-1的(b)中,A为D的双亲。(8)兄弟:同一个双亲的孩子之间互称兄弟。如图7-1-1的(b)中的H,I,J。(9)祖先:从根到该结点所经过分支上的所有结点。如:M的祖先为A,D,H(10)子孙:以某结点为根的子树中的任一结点都称为该结点的子孙。如图7-1-1的(b)中B的子孙为E,F,K,L(11)层次:从根开始定义为第一层,根的孩子为第二层,依次例推。(12)深度(或高度):树中结点的最大层次。(13)有序树:将树中结点的各子树看成从左到右是有序的。有序树中最左边的子树的根称第一个孩子,最右边的称为最后一个孩子。
4、(14)无序树:树中结点的各子树没有次序的。(15)森林:是m(m0)棵互不相交的树的集合,对树中每个结点而言,其子树的集合即为森林。v该树的根结点为:a,分支结点为:b、c、e;叶子结点为d、f、g、h、i、j;v该树的度为3,高度为4;v第一层有结点:a,第二层有结点:b、c;第三层有结点d、e、f、g、h,第四层有结点:i、j。abcdeigjhf7.2 7.2 二叉树二叉树7.2.1 二叉树的定义和性质:1、定义:二叉树是另一种树型结构,它的特点是每个结点至多只有二棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。2、如图所示二叉树的五种基本形态
5、(a)(b)(c)(d)(e)7.2.2 7.2.2 二叉树的性质二叉树的性质(1)性质1:在二叉树的第i层上至多有2i-1个结点(i1)。(2)性质2:深度为k的二叉树的最大结点数为2k-1(k1)。(3)性质3:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为 n2,则n0=n2+1(4)一棵深度为k且有2k-1个结点的二叉树称满二叉树。特点:每层上的结点数都为最大结点数,除终端结点外,每个结点都有两棵子树。(5)完全二叉树:如深度为k,有N个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1到N的结点一一对时,称之为完全二叉树。特点:深度为k的完全二叉树,其前
6、k-1层是一棵满二叉树,最后第k层结点都尽量排在靠左的位置上。显然一棵满二叉树一定是完全二叉树,但一棵完全二叉树不一定是满二叉树。v(6)完全二叉树的两个特性:v性质4:具有n个结点的完全二叉树的深度为Log2n+1。v性质5:如果对一棵有n个结点的完全二叉树(其深度为Log2n+1)的结点按顺序编号,则任一结点i(1in)有:若i=1,则结点i是二叉树的根结点,若i1,则i的双亲结点为结点i/2;若2in,则i的左孩子是结点2i,否则无左孩子;若2i+1n,则i的右孩子是结点2i+1,否则无右孩子。v7.2.3 7.2.3 二叉树的存储结构二叉树的存储结构 1.顺序存储结构 用一组连续的存储
7、单元存储二叉树的数据元素,按满二叉树的结点顺序编号依次存放二叉树中数据元素。0 1 2 3 4 5 T(6)图7-3完全二叉树ABCDEFA B C D E F2.2.链式存储结构链式存储结构链表的结点至少包含:数据域和左右指针域的链有时还需增一指向双亲的指针域,有两个指针域的链表称为二叉链表,有三个指针域的链表称为三叉链表,如图5-5所示:例7-3分别画出二叉树链式存储结构 7.3 7.3 遍历二叉树遍历二叉树 7.3.1 二叉树遍历遍历二叉树:是指如何按某条搜索路径巡访树中每个结点使得每个结点均被访问一次,而且仅被访问一次。简言之,以一定规则将二叉树中结点排列成一个线性序列。二叉树的遍历有
8、三种方法:前序遍历、中序遍历、后序遍历。1.先序遍历:v按先序遍历根结点;v访问根结点的左子树;v访问根结点的右子树;v2.中序遍历:v按中序遍历根结点的左子树;v访问根结点;v按中序遍历根结点的右子树;v3.后序遍历:v按后序遍历根结点的左子树;v按后序遍历根结点的右子树;v访问根结点;v4.层次遍历:v 按照自上而下(从根结点开始),从左到右(同一层)的顺序逐层访问二叉树上的所有结点,这样的遍历方法称为层次遍历。例74 v用三种不同方法遍历图5-9所示的二叉树得:v前序遍历结果为:124753689v中序遍历结果为:742513869v后序遍历结果为:745289631v层次遍历结果为:1
9、23456789v前序遍历的序列为:abdgcefhv中序遍历的序列为:dgbaechfv后序遍历的序列为:gdbehfcav层次遍历的序列为:abcdefghabcdgefh如下图所示的一棵二叉树,写出其前序遍历、中序遍历、后序遍历的系列:v举例:如图的一棵二叉树:1、写出先序遍历、中序遍历和后序遍历的结果;2、写出结点c的双亲结点、其左右孩子。eadcbjfghiv先序遍历序列:eadcbjfghiv中序遍历序列:abcdjefhgiv后序遍历序列:bcjdahigfevc的双亲结点是e,左孩子为b,没有右孩子。eadcbjfghi7.3.2 7.3.2 恢复二叉树恢复二叉树1.由前序和中
10、序恢复二叉树(1)根据前序序列确定树的根(第一个根),根据中序确定左子树和右子树。(2)分别找出左子树和右子树的根结点,并把左、右子树的根结点连到父结点上去。(3)再对左子树和右子树按此法找根结点和左、右子树,直到子树只剩下1个结点或2结点或空为止。2.由后序和中序恢复二叉树(1)根据后序序列确定树的根(最后一个),根据中序确定左子树和右子树。(2)分别找出左子树和右子树的根结点,并把左、右子树的根结点连到父结点上去。(3)再对左子树和右子树按此法找根结点和左、右子树,直到子树只剩下1个结点或2结点或空为止。7.4 7.4 二叉树的转换二叉树的转换v7.4.1 7.4.1 一般树转换为二叉树一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 预算法 第七 harc
限制150内