第六章树 名词解释 树2。结点的度3。叶子 分支点5。树的度 6.父结点、子结点7兄弟8结点的层数9树的高度10二叉树 11空二叉树12左孩子、右孩子13孩子数14满二叉树15完全二叉树 16先根遍历17中根遍历18后根遍历19二叉树的遍历20判定树 1哈夫曼树 填空题 1、树(及一切树形结构)是一种“ 结构。在树上, 结点没有直接前趋 对树上任一结点X来说,X是它的任一子树的根结点惟一的 、一棵树上的任何结点(不包括根本身)称为根的 。若B是A的子孙,则称A是B 的 3、一般的,二叉树有二叉树、的二叉树、只有的二叉树、只有 的二叉树、同时有的二叉树五种基本形态。 4、二叉树第i(i>=1)层上至多有 个结点。 5、深度为kk>=1)的二叉树至多有个结点 6、对任何二叉树,若度为2的节点数为n2,则叶子数n= 7、满二叉树上各层的节点数已达到了二叉树可以容纳的 满二叉树也是 二叉 树,但反之不然。 8、具有n个结点的完全二叉树的深度为 9、如果将一棵有n个结点的完全二叉树按层编号,则对任一编号为i(1<=i<=n)的结点X有: (1)若i=1,则结点X是 若i)1,则X的双亲 PARENT(X)的编号为 (2)若2i>n,则结点X无 且无 否则,X的左孩子 LCHILD(X)的编号为 (3)若2i+1>n,则结点X无:否则,X的右孩子 RCHILD(X)的编号为 0.二叉树通常有存储结构和 存储结构两类存储结构 11.每个二叉链表的访问只能从结点的指针,该指针具有标识二叉链表的作用。 12.对二叉链表的访问只能从指针开始,若二叉树为空,则=NUL 13.二叉链表中每个存储结点的每个指针域必须有一个值,这个值或者是 的指 针,或者是 14.具有n个结点的二叉树中,一共有 个指针域,其中只有 个用来指向结点 的左右孩子,其余的 个指针域为NULL。 15.二叉树有不同的链式存储结构,其中最常用的是 16.可通过在非完全二叉树的“残缺”位置上增设“ 将其转化为完全二叉树。 17.以下程序段采用先根遍历方法求二叉树的叶子数,请在横线处填充适当的语句 Void countleaf( bitreptr t,int* count)/*根指针为t,假定叶子数 count的初值为 lif(t!=NULL lif((t->lchild==NULL)&&(t->rchild==NULL)) countleaf(t->lchild, &count) 18.一棵二叉树由根、左子树和右子树三部分组成,因此对二叉树的遍历也可相应地分解成
1 第六章 树 一.名词解释: 1 树 2。结点的度 3。叶子 4。分支点 5。树的度 6.父结点、子结点 7 兄弟 8 结点的层数 9 树的高度 10 二叉树 11 空二叉树 12 左孩子、右孩子 13 孩子数 14 满二叉树 15 完全二叉树 16 先根遍历 17 中根遍历 18 后根遍历 19 二叉树的遍历 20 判定树 21 哈夫曼树 二、填空题 1、 树(及一切树形结构)是一种“________”结构。在树上,________结点没有直接前趋。 对树上任一结点 X 来说,X 是它的任一子树的根结点惟一的________。 2、 一棵树上的任何结点(不包括根本身)称为根的________。若 B 是 A 的子孙,则称 A 是 B 的________ 3、 一般的,二叉树有______二叉树、______的二叉树、只有______的二叉树、只有______ 的二叉树、同时有______的二叉树五种基本形态。 4、 二叉树第 i(i>=1)层上至多有______个结点。 5、 深度为 k(k>=1)的二叉树至多有______个结点。 6、 对任何二叉树,若度为 2 的节点数为 n2,则叶子数 n0=______。 7、 满二叉树上各层的节点数已达到了二叉树可以容纳的______。满二叉树也是______二叉 树,但反之不然。 8、 具有 n 个结点的完全二叉树的深度为______。 9、 如果将一棵有 n 个结点的完全二叉树按层编号,则对任一编号为 i(1<=i<=n)的结点 X 有: (1) 若 i=1,则结点 X 是______;若 i〉1,则 X 的双亲 PARENT(X)的编号为______。 (2) 若 2i>n,则结点 X 无______且无______;否则,X 的左孩子 LCHILD(X)的编号为 ______。 (3) 若 2i+1>n,则结点 X 无______;否则,X 的右孩子 RCHILD(X)的编号为______。 10.二叉树通常有______存储结构和______存储结构两类存储结构。 11.每个二叉链表的访问只能从______结点的指针,该指针具有标识二叉链表的作用。 12.对二叉链表的访问只能从______指针开始,若二叉树为空,则______=NULL. 13.二叉链表中每个存储结点的每个指针域必须有一个值,这个值或者是____________的指 针,或者是______。 14.具有 n 个结点的二叉树中,一共有________个指针域,其中只有________个用来指向结点 的左右孩子,其余的________个指针域为 NULL。 15.二叉树有不同的链式存储结构,其中最常用的是________与________。 16.可通过在非完全二叉树的“残缺”位置上增设“________”将其转化为完全二叉树。 17.以下程序段采用先根遍历方法求二叉树的叶子数,请在横线处填充适当的语句。 Void countleaf(bitreptr t,int *count)/*根指针为 t,假定叶子数 count 的初值为 0*/ {if(t!=NULL) {if((t->lchild==NULL)&&(t->rchild==NULL))________; countleaf(t->lchild,&count); ________ } } 18.一棵二叉树由根、左子树和右子树三部分组成,因此对二叉树的遍历也可相应地分解成
项“子任务”。 9.若以D、L、R分别表示二叉树的三项子任务,限定“先左后右”,这样可能的次序有: 种,按这三种次序进行的遍历分别称为 0.树的主要遍历方法有 等三种 判定树的每个 包含一个条件,对应于一次比较或判断,每个 对应一种 分类结果。 22.设定T是一判定树,其终端结点为n n。每个终端结点ni对应的百分为pi(通 常将p;称为n的权)。再假定n的祖先数为1;,这样,按T进行分类的平均比较次数为 23.根据文字说明,请在以下横线处填充适当的语句。 采用静态链表作存储结构,设置一个大小为2n-1的数组,令数组每个元素由四个域组成 Wt是结点的权值; Child、 rchild分别为结点的左、右孩子指针; parent是结点的双亲在 数组中的下标。其数组元素类型定义如下: typedef struct Float wt /*权值*/ nt parent, Child rchild /*指针域*/ )nod typedef node hftree [2*n-1 在这种存储结构上的哈夫曼算法可描述如下: void Huff man(int k, float w[k], hftree T) /*求给定权值W的哈夫曼树T*/ lint i, j,x,y; float mn for(i=0;i<2*k-1;i++) I Tli]. parent=-1: T[i]. lchild=-1: T[i].rchild=-1 Tli. wt=Wli] else Tlil wt=0 for(i=0;i<k-1;i++) x=0;y=0; m=maxint: n=maxint if((t[j]. wt<m)&&(T[j]. parent==-1))n=m;y= else if((T[j]. wt<n)&&(T[jl. parint==-1))In=tLj]. wt; y=j: K TIx]. parent= TLy]. parent TIk+i].wt= TLk+i]. lchild= TLk+i]. rchild 24.若二叉树的一个叶子是某子树的中根遍历序列中的第一个结点,则它必是该子树的后根 遍历序列中的 个结点。 在 遍历二叉树的序列中,任何结点的子树上的所有结点,都是直接跟在该结点 6.具有n个结点的完全二叉树,若按层次从上到下、从左到右对其编,号(根结点为1号), 则编号最大的分支结点序号是 编号最小的分支结点序号是 编号最大的 叶子结点序号是 ,编号最小的叶子结点序号是 27.二叉树的先根遍历序列中,除根结点外,任一结点均处在其双亲结点的
2 ________、________、________三项“子任务”。 19.若以 D、L、R 分别表示二叉树的三项子任务,限定“先左后右”,这样可能的次序有: ________、________、________三种,按这三种次序进行的遍历分别称为________、________、 ________。 20.树的主要遍历方法有________、________、________等三种。 21.判定树的每个________包含一个条件,对应于一次比较或判断,每个________对应一种 分类结果。 22.设定 T 是一判定树,其终端结点为 n1,……,nk。每个终端结点 ni 对应的百分为 pi(通 常将pi称为n1的权)。再假定ni的祖先数为li,这样,按T进行分类的平均比较次数为________。 23.根据文字说明,请在以下横线处填充适当的语句。 采用静态链表作存储结构,设置一个大小为 2n-1 的数组,令数组每个元素由四个域组成: wt 是结点的权值;lchild、rchild 分别为结点的左、右孩子指针;parent 是结点的双亲在 数组中的下标。其数组元素类型定义如下: typedef struct {float wt /*权值*/ int parent,lchild rchild; /*指针域*/ }node; typedef node hftree[2*n-1]; 在这种存储结构上的哈夫曼算法可描述如下: void Huffman(int k,float W[k],hftree T) /*求给定权值 W 的哈夫曼树 T*/ {int i,j,x,y; float m,n; for(i=0;i<2*k-1;i++) { T[i].parent=-1;T[i].lchild=-1;T[i].rchild=-1; if(________)T[i].wt=W[i]; else T[i].wt=0 } for(i=0;i<k-1;i++) { x=0;y=0;m=maxint;n=maxint; for(j=0;j<k=i;j++) if((T[j].wt<m)&&(T[j].parent==-1)){n=m;y=________;m=________;x=j;} else if((T[j].wt<n)&&(T[j].parint==-1)){n=T[j].wt;y=j;} T[x].parent=________;T[y].parent=________; T[k+i].wt=________; T[k+i].lchild=________;T[k+i].rchild=________; } 24.若二叉树的一个叶子是某子树的中根遍历序列中的第一个结点,则它必是该子树的后根 遍历序列中的________个结点。 25.在________遍历二叉树的序列中,任何结点的子树上的所有结点,都是直接跟在该结点 之后。 26.具有 n 个结点的完全二叉树,若按层次从上到下、从左到右对其编,号(根结点为 1 号), 则编号最大的分支结点序号是________,编号最小的分支结点序号是________,编号最大的 叶子结点序号是________,编号最小的叶子结点序号是________。 27.二叉树的先根遍历序列中,除根结点外,任一结点均处在其双亲结点的________
28.先根遍历树和先根遍历与该树对应的二叉树,其结果 9.树与二叉树之间最主要的差别是:二叉树中各结点的子树要区分为 和 即使在结点只有一棵子树的情况下,也要明确指出该子树是 还是 0.由 转换成二叉树时,其根结点的右子树总是空的 31.哈夫曼树是带权路径度 的树,通常权值较大的结点离根 2.有m个叶子结点的哈夫曼树,其结点总数为 p00 填空题33 33.一棵树的形状如图填空题33所示,它的根结点是 ,叶子结点是,结点 H的度是,这棵树的度是 这棵树的深度是 结点F的儿子结点 是 结点G的父结点是 34.树的结点数目至少为 二叉树的结点数目至少为 中结点的最大度数允许大于2,而 中结点的最大度数不允许大于2 36.结点最少的树为 ,结点最少的二叉树为 37.若一棵二叉树的叶子数为n,则该二叉树中,左、右子树皆非空的结点个数为。 38.任意一棵具有n个结点的二叉树,若它有m个叶子,则该二叉树上度数为1的结点为 个 9.现有按中序遍历二叉树的结果为ABC,问有 种不同形态的二叉树可以得到这 遍历结果,这些二叉树分别是 40.以数据集{4,5,6,7,10,12,18}为叶结点权值所构造的哈无曼树为 其带 权路径长度为 41.有m个叶子结点的哈夫曼树上的结点数是 42.已知一棵度为3的树有2个度为1的结点,3个度过为2的结点,4个度为3的结点,则 该树中有 个叶子结点 43.设树T的度为4,其中度为1、2、3和4的结点个数分别是4、2、1和1,则T中叶子结 点的个数是 三、单向选择题 以下说法错误的是 ①树形结构的特点是一个结点可以有多个直接前趋 ②线性结构中的一个结点至多只有一个直接后继 ③树形结构可以表达(组织)更复杂的数据 ④树(及一切树形结构)是一种”分支层次"结构 ⑤任何只含一个结点的集合是一棵树 2,以下说法错误的是 3
3 28.先根遍历树和先根遍历与该树对应的二叉树,其结果________。 29.树与二叉树之间最主要的差别是:二叉树中各结点的子树要区分为________和________, 即使在结点只有一棵子树的情况下,也要明确指出该子树是________还是________。 30.由________转换成二叉树时,其根结点的右子树总是空的。 31.哈夫曼树是带权路径度________的树,通常权值较大的结点离根________。 32.有 m 个叶子结点的哈夫曼树,其结点总数为________。 33.一棵树的形状如图填空题 33 所示,它的根结点是________,叶子结点是________,结点 H 的度是________,这棵树的度是________,这棵树的深度是________,结点 F 的儿子结点 是________,结点 G 的父结点是________。 34.树的结点数目至少为________,二叉树的结点数目至少为________。 35.________中结点的最大度数允许大于 2,而________中结点的最大度数不允许大于 2。 36.结点最少的树为________,结点最少的二叉树为________。 37.若一棵二叉树的叶子数为 n,则该二叉树中,左、右子树皆非空的结点个数为________。 38.任意一棵具有 n 个结点的二叉树,若它有 m 个叶子,则该二叉树上度数为 1 的结点为 ________个。 39.现有按中序遍历二叉树的结果为 ABC,问有________种不同形态的二叉树可以得到这一 遍历结果,这些二叉树分别是________。 40.以数据集{4,5,6,7,10,12,18}为叶结点权值所构造的哈无曼树为________,其带 权路径长度为________。 41.有 m 个叶子结点的哈夫曼树上的结点数是________。 42.已知一棵度为 3 的树有 2 个度为 1 的结点,3 个度过为 2 的结点,4 个度为 3 的结点,则 该树中有________个叶子结点。 43.设树 T 的度为 4,其中度为 1、2、3 和 4 的结点个数分别是 4、2、1 和 1,则 T 中叶子结 点的个数是________。 三、单向选择题 1. 以下说法错误的是 ( ) ①树形结构的特点是一个结点可以有多个直接前趋 ②线性结构中的一个结点至多只有一个直接后继 ③树形结构可以表达(组织)更复杂的数据 ④树(及一切树形结构)是一种"分支层次"结构 ⑤任何只含一个结点的集合是一棵树 2,以下说法错误的是 ( )
①二叉树可以是空集 ②二叉树的任一结点都有两棵子树 叉树与树具有相同的树形结构 ④二叉树中任一结点的两棵子树有次序之分 3、以下说法错误的是 ①完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达 ②在三叉链表上,二叉树的求双亲运算很容易实现 ③在二叉链表上,求根,求左、右孩子等很容易实现 ④在二叉链表上,求双亲运算的时间性能很好 4、以下说法错误的是 ①一般在哈夫曼树中,权值越大的叶子离根结点越近 ②哈夫曼树中没有度数为1的分支结点 ③若初始森林中共有n裸二叉树,最终求得的哈夫曼树共有2n-1个结点 ④若初始森林中共有n裸二叉树,进行2n-1次合并后才能剩下一棵最终的哈夫曼树 5.深度为6的二叉树最多有()个结点 ③32 ④31 6.将含有83个结点的完全二叉树从根结点开始编号,根为1号,后面按从上到下、从左到 右的顺序对结点编号,那么编号为41的双结点编号为 ①42②40 321 ④20 7.任何一棵二叉树的叶结点在其先根、中根、后跟遍历序列中的相对位置( ①肯定发生变化②有时发生变化 ③肯定不发生变化④无法确定 8.设二叉树有n个结点,则其深度为 n-1②n③5 floor(log2n)④无法确定 9.设深度为k的二叉树上只有度为0和度为2的节点,则这类二叉树上所含结点总数最少 ①k+1 ②2k③2k-1④2k+1 10.下列说法正确的是 ①树的先根遍历序列与其对应的二叉树的先根遍历序列相同 ②树的先根遍历序列与其对应的二叉树的后根遍历序列相同 ③树的后根遍历序列与其对应的二叉树的先根遍历序列相同 ④树的后根遍历序列与其对应的二叉树的后根遍历序列相同 11.下列说法中正确的是 ①任何一棵二叉树中至少有一个结点的度为2 ②任何一棵二叉树中每个结点的度都为2 ③任何一棵二叉树中的度肯定等于2 ④任何一棵二叉树中的度可以小于2 12.一棵二叉树满足下列条件:对任意结点,若存在左、右子树,则其值都小于它的左子树 上所有结点的值,而大于右子树上所有结点的值。现采用()遍历方式就可以得到这棵 二叉树所有结点的递增序列 ①先根②中根③后根④层次 13.设森林T中有4棵树,第 、四棵树的结点个数分别是n1,n2,n3,n4,那么当把 森林T转换成一棵二叉树后,且根结点的右子树上有()个结点 ①n-1②m③n1+n2+n3④n2tn3+n
4 ①二叉树可以是空集 ②二叉树的任一结点都有两棵子树 ③二叉树与树具有相同的树形结构 ④二叉树中任一结点的两棵子树有次序之分 3、以下说法错误的是 ( ) ①完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达 ②在三叉链表上,二叉树的求双亲运算很容易实现 ③在二叉链表上,求根,求左、右孩子等很容易实现 ④在二叉链表上,求双亲运算的时间性能很好 4、以下说法错误的是 ( ) ①一般在哈夫曼树中,权值越大的叶子离根结点越近 ②哈夫曼树中没有度数为 1 的分支结点 ③若初始森林中共有 n 裸二叉树,最终求得的哈夫曼树共有 2n-1 个结点 ④若初始森林中共有 n 裸二叉树,进行 2n-1 次合并后才能剩下一棵最终的哈夫曼树 5.深度为 6 的二叉树最多有( )个结点 ( ) ①64 ②63 ③32 ④31 6.将含有 83 个结点的完全二叉树从根结点开始编号,根为 1 号,后面按从上到下、从左到 右的顺序对结点编号,那么编号为 41 的双结点编号为 ( ) ①42 ②40 ③21 ④20 7.任何一棵二叉树的叶结点在其先根、中根、后跟遍历序列中的相对位置 ( ) ①肯定发生变化 ②有时发生变化 ③肯定不发生变化 ④无法确定 8.设二叉树有 n 个结点,则其深度为 ( ) ①n-1 ②n ③5floor(log2n) ④无法确定 9.设深度为 k 的二叉树上只有度为 0 和度为 2 的节点,则这类二叉树上所含结点总数最少 ( )个 ①k+1 ②2k ③2k-1 ④2k+1 10.下列说法正确的是 ( ) ①树的先根遍历序列与其对应的二叉树的先根遍历序列相同 ②树的先根遍历序列与其对应的二叉树的后根遍历序列相同 ③树的后根遍历序列与其对应的二叉树的先根遍历序列相同 ④树的后根遍历序列与其对应的二叉树的后根遍历序列相同 11.下列说法中正确的是 ( ) ①任何一棵二叉树中至少有一个结点的度为 2 ②任何一棵二叉树中每个结点的度都为 2 ③任何一棵二叉树中的度肯定等于 2 ④任何一棵二叉树中的度可以小于 2 12.一棵二叉树满足下列条件:对任意结点,若存在左、右子树,则其值都小于它的左子树 上所有结点的值,而大于右子树上所有结点的值。现采用( )遍历方式就可以得到这棵 二叉树所有结点的递增序列。 ①先根 ②中根 ③后根 ④层次 13.设森林 T 中有 4 棵树,第一、二、三、四棵树的结点个数分别是 n1,n2,n3,n4,那么当把 森林 T 转换成一棵二叉树后,且根结点的右子树上有( )个结点。 ①n1-1 ②n1 ③n1+n2+n3 ④n2+n3+n4
14.森林T中有4棵树,第一、二、三、四棵树的结点个数分别是nl,n2,n3,n4,那么当把森 林T转换成一棵二叉树后,且根结点的左孩子上有()个结点。 ①n ②n③n+n2+n3④n2+n3 15.对含有( 个结点的非空二叉树,采用任何一种遍历方式,其结点访问序列均相 ①0 ④不存在这样的二叉树 16.讨论树、森林和二叉树的关系,目的是为了() ①借助二叉树上的运算方法去实现对树的一些运算 ②将树、森林按二叉树的存储方式进行存储 ③将树、森林转换成二叉树 ④体现一种技巧,没有什么实际意义 17.如图选择题17所示二叉树的中序遍历序列是 ③ dbaefcg ④ debbage 8.已知某二叉树的后续遍历序列是 dabic,中序遍历序列是 dabo,它的前序遍历序列是() ① ached ② deabc ③ decal ④ ceda 19.如果T2是由有序树T转化而来的二叉树,那么T中结点的前序就是T2中结点的() ①前序 ②中序 ③后序 ④层次序 20.如果12是由有序树T转化而来的二叉树,那么T中结点的后序就是T2中结点的() ①前序 ②中序 ③后序 ④层次序 21.某二叉树的前序遍历结点访问顺序是 abdgcefh,中序遍历的结点访问顺序是 dgbaechf 则其后序遍历的结点访问顺序是 ① bdgcefha ② gdbecfha ③④ bdgechfa④ gdbehfca 2.在图选择题22中的二叉树中,()不是完全二叉树
5 14.森林 T 中有 4 棵树,第一、二、三、四棵树的结点个数分别是 n1,n2,n3,n4,那么当把森 林 T 转换成一棵二叉树后,且根结点的左孩子上有( )个结点。 ①n1-1 ②n1 ③n1+n2+n3 ④n2+n3+n4 15.对含有( )个结点的非空二叉树,采用任何一种遍历方式,其结点访问序列均相 同。 ①0 ②1 ③2 ④不存在这样的二叉树 16.讨论树、森林和二叉树的关系,目的是为了( ) ①借助二叉树上的运算方法去实现对树的一些运算 ②将树、森林按二叉树的存储方式进行存储 ③将树、森林转换成二叉树 ④体现一种技巧,没有什么实际意义 17.如图选择题 17 所示二叉树的中序遍历序列是( ) ①abcdgef ② dfebagc ③dbaefcg ④defbagc 18.已知某二叉树的后续遍历序列是 dabec,中序遍历序列是 deabc,它的前序遍历序列是( ) ①acbed ②deabc ③decab ④cedba 19.如果 T2 是由有序树 T 转化而来的二叉树,那么 T 中结点的前序就是 T2中结点的( ) ①前序 ②中序 ③后序 ④层次序 20.如果 T2 是由有序树 T 转化而来的二叉树,那么 T 中结点的后序就是 T2 中结点的( ) ①前序 ②中序 ③后序 ④层次序 21.某二叉树的前序遍历结点访问顺序是 abdgcefh,中序遍历的结点访问顺序是 dgbaechf, 则其后序遍历的结点访问顺序是 ( ) ①bdgcefha ②gdbecfha ③④ bdgechfa ④ gdbehfca 22.在图选择题 22 中的二叉树中,( )不是完全二叉树