当前位置:文档之家› 第6章+树和二叉树(习题)

第6章+树和二叉树(习题)

第6章+树和二叉树(习题)
第6章+树和二叉树(习题)

第六章树和二叉树

一、选择题

1.已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为( )

A.-A+B*C/DE B. -A+B*CD/E C.-+*ABC/DE D. -+A*BC/DE 2.算术表达式a+b*(c+d/e)转为后缀表达式后为()

A.ab+cde/* B.abcde/+*+ C.abcde/*++ D.abcde*/++

3. 设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶子数为()

A.5 B.6 C.7 D.8

4. 在下述结论中,正确的是()

①只有一个结点的二叉树的度为0; ②二叉树的度为2;③二叉树的左右子树可任意交换; ④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A.①②③B.②③④C.②④D.①④

5. 设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是()

A.m-n B.m-n-1 C.n+1 D.条件不足,无法确定

6.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()

A.9 B.11 C.15 D.不确定

7.在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个

A.4 B.5 C.6 D.7

8.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。与森林F对应的二叉树根结点的右子树上的结点个数是()。

A.M1 B.M1+M2 C.M3 D.M2+M3

9.具有10个叶结点的二叉树中有()个度为2的结点。

A.8 B.9 C.10 D.ll

10.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()

A.250 B.500 C.254 D.505 E.以上答案都不对

11. 设给定权值总数有n 个,其哈夫曼树的结点总数为( )

A.不确定B.2n C.2n+1 D.2n-1

12. 有n个叶子的哈夫曼树的结点总数为()。

A.不确定B.2n C.2n+1 D.2n-1

13. 有关二叉树下列说法正确的是()

A.二叉树的度为2 B.一棵二叉树的度可以小于2

C.二叉树中至少有一个结点的度为2 D.二叉树中任何一个结点的度都为2

14. 一个具有1025个结点的二叉树的高h为()

A.11 B.10 C.11至1025之间D.10至1024之间

15.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( )结点

A.2h B.2h-1 C.2h+1 D.h+1

16. 一棵具有n个结点的完全二叉树的树高度(深度)是()

A.?logn?+1 B.logn+1 C.?logn?D.logn-1

17.在一棵高度为k的满二叉树中,结点总数为()

A.2k-1 B.2k C.2k-1 D.?log2k?+1

18.高度为K的二叉树最大的结点数为()。

A.2k B.2k-1C.2k -1 D.2k-1-1

19. 一棵树高为K的完全二叉树至少有()个结点

A.2k–1 B. 2k-1–1 C. 2k-1 D. 2k

20.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( )次序的遍历实现编号。

A.先序 B. 中序 C. 后序 D. 从根开始按层次遍历21.树的后根遍历序列等同于该树对应的二叉树的( ).

A. 先序序列

B. 中序序列

C. 后序序列

22.若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用( )遍历方法最合适。

A.前序B.中序C.后序D.按层次

23.在下列存储形式中,哪一个不是树的存储形式?()

A.双亲表示法B.孩子链表表示法C.孩子兄弟表示法D.顺序存储表示法

24.已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为()。

A.CBEFDA B.FEDCBA C.CBEDFA D.不定

25. 某二叉树中序序列为A,B,C,D,E,F,G,后序序列为B,D,C,A,F,G,E 则前序序列是:

A.E,G,F,A,C,D,B B.E,A,C,B,D,G,F C.E,A,G,C,F,B,D D.上面的都不对

26. 上题的二叉树对应的森林包括多少棵树()

A.l B.2 C.3 D.概念上是错误的

27.二叉树的先序遍历和中序遍历如下:先序遍历:EFHIGJK;中序遍历: HFIEJKG 。该二叉树根的右子树的根是:

A、E

B、F

C、G

D、H

28.将一棵树t 转换为孩子—兄弟链表表示的二叉树h,则t的后根序遍历是h 的()A.前序遍历B.中序遍历C.后序遍历D.层次遍历

29.下面的说法中正确的是().

(1)任何一棵二叉树的叶子结点在三种遍历中的相对次序不变;

(2)按二叉树定义,具有三个结点的二叉树共有6种。

A.(1)(2) B.(1) C.(2) D.(1)、(2)都错

30.对于前序遍历与中序遍历结果相同的二叉树为(1);

对于前序遍历和后序遍历结果相同的二叉树为(2)。

A.一般二叉树B.只有根结点的二叉树C.根结点无左孩子的二叉树

D.根结点无右孩子的二叉树E.所有结点只有左子数的二叉树F.所有结点只有右子树的二叉树

31.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()

A.所有的结点均无左孩子B.所有的结点均无右孩子

C.只有一个叶子结点D.是任意一棵二叉树

32.在二叉树结点的先序序列,中序序列和后序序列中,所有叶子结点的先后顺序()A.都不相同B.完全相同

C.先序和中序相同,而与后序不同D.中序和后序相同,而与先序不同

33.某二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树。

A.空或只有一个结点B.任一结点无左子树

C.高度等于其结点数D.任一结点无右子树

34. 一棵左子树为空的二叉树在先序线索化后,其中空的链域的个数是:( )

A.不确定 B. 0 C. 1 D. 2

35. 一棵左右子树均不空的二叉树在先序线索化后,其中空的链域的个数是:( )。

A. 0

B. 1

C. 2

D. 不确定

36. 若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则x的前驱为( )

A. X的双亲

B. X的右子树中最左的结点

C.X的左子树中最右结点

D.X的左子树中最右叶结点

37. 引入二叉线索树的目的是()

A.加快查找结点的前驱或后继的速度B.为了能在二叉树中方便的进行插入与删除C.为了能方便的找到双亲D.使二叉树的遍历结果唯一

38.n个结点的线索二叉树上含有的线索数为()

A.2n B.n-l C.n+l D.n

39. 设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有()个。

A.n-1 B.n C.n+1 D.n+2

40.由3 个结点可以构造出多少种不同的二叉树?()

A.2 B.3 C.4 D.5

41.下述编码中哪一个不是前缀码()。

A.(00,01,10,11)B.(0,1,00,11)

C.(0,10,110,111)D.(1,01,000,001)

42. 当一棵有n个结点的二叉树按层次从上到下,同层次从左到右将数据存放在一维数组A[l..n]中时,数组中第i个结点的左孩子为()

A.A[2i](2i=

二、判断题

1. 二叉树是度为2的有序树。

2. 完全二叉树一定存在度为1的结点。

3. 对于有N个结点的二叉树,其高度为log2n。

4.深度为K的二叉树中结点总数≤2k-1。

5. 二叉树以后序遍历序列与前序遍历序列反映的同样的信息(他们反映的信息不独立)。

6. 二叉树的遍历结果不是唯一的.

7. 二叉树的遍历只是为了在应用中找到一种线性次序。

8. 一个树的叶结点,在前序遍历和后序遍历下,皆以相同的相对位置出现。

9. 二叉树的前序遍历并不能唯一确定这棵树,但是,如果我们还知道该树的根结点是那一个,则可以确定这棵二叉树。

10. 一棵一般树的结点的前序遍历和后序遍历分别与它相应二叉树的结点前序遍历和后序遍历是一致的。

11.对一棵二叉树进行层次遍历时,应借助于一个栈。

12.用树的前序遍历和中序遍历可以导出树的后序遍历。

13.采用二叉链表作存储结构,树的前序遍历和其相应的二叉树的前序遍历的结果是一样的。

14. 用一维数组存储二叉树时,总是以前序遍历顺序存储结点。

15.中序遍历二叉链存储的二叉树时,一般要用堆栈;中序遍历检索二叉树时,也必须使用堆栈。

16.中序遍历一棵二叉排序树的结点就可得到排好序的结点序列

17. 后序线索二叉树是不完善的,要对它进行遍历,还需要使用栈。

18.任何二叉树的后序线索树进行后序遍历时都必须用栈。

19.任何一棵二叉树都可以不用栈实现前序线索树的前序遍历。

20.由一棵二叉树的前序序列和后序序列可以唯一确定它。

21.完全二叉树中,若一个结点没有左孩子,则它必是树叶。

22. 二叉树只能用二叉链表表示。

23. 一棵有n个结点的二叉树,从上到下,从左到右用自然数依次给予编号,则编号为i的结点的左儿子的编号为2i(2i< n),右儿子是2i+1(2i+1

24. 给定一棵树,可以找到唯一的一棵二叉树与之对应。

25. 一棵树中的叶子数一定等于与其对应的二叉树的叶子数。

26. 用链表(llink-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n-1个空指针。

27. 二叉树中每个结点至多有两个子结点,而对一般树则无此限制.因此,二叉树是树的特殊情形.

28.树形结构中元素之间存在一个对多个的关系。

29.在二叉树的第i层上至少有2i-1个结点(i>=1)。

30.必须把一般树转换成二叉树后才能进行存储。

31.完全二叉树的存储结构通常采用顺序存储结构。

32.将一棵树转成二叉树,根结点没有左子树;

33.在二叉树中插入结点,则此二叉树便不再是二叉树了。

34.二叉树是一般树的特殊情形。

35.树与二叉树是两种不同的树型结构。

36. 非空的二叉树一定满足:某结点若有左孩子,则其中序前驱一定没有右孩子

37.度为二的树就是二叉树。

38.深度为k具有n个结点的完全二叉树,其编号最小的结点序号为?2k-2?+1。

39.下面二叉树的定义只有一个是正确的,请在正确的地方画―√‖。

(1)它是由一个根和两株互不相交的、称为左子树和右子树的二叉树组成。

(2)(a)在一株二叉树的级i上,最大结点数是2i-1(i≥1)

(b)在一棵深度为k的二叉树中,最大结点数是2k-1+1(k≥1)。

(3)二叉树是结点的集合,满足如下条件:

(a)它或者是空集;

(b)或者是由一个根和两个互不相交的、称为左子树和右子树的二叉树组成。

40. 在中序线索二叉树中,每一非空的线索均指向其祖先结点。

41. 线索二叉树的优点是便于是在中序下查找前驱结点和后继结点。

42. 二叉树中序线索化后,不存在空指针域。

43.霍夫曼树的结点个数不能是偶数。

44. 一棵哈夫曼树的带权路径长度等于其中所有分支结点的权值之和。

45. 哈夫曼树无左右子树之分。

46.当一棵具有n个叶子结点的二叉树的WPL值为最小时,称其树为Huffman树,且其二叉树的形状必是唯一的。

47.哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。

48. 用链表(llink-rlink)存储包含n个结点的二叉树时,结点的2n个指针区域中有n+1个空指针。( )

三、填空题

1.二叉树由_(1)__,__(2)_,_(3)__三个基本单元组成。

2.树在计算机内的表示方式有_(1)__,_(2)__,_(3)__。

3.在二叉树中,指针p所指结点为叶子结点的条件是______。

4.中缀式a+b*3+4*(c-d)对应的前缀式为__(1)_,若a=1,b=2,c=3,d=4,则后缀式db/cc*a-b*+的运算结果为_(2)__。

5.具有256个结点的完全二叉树的深度为______。

6.已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树有______个叶子结点。

7.深度为k的完全二叉树至少有___(1)____个结点,至多有___(2)____个结点。

8.一棵有n个结点的满二叉树有__(1)_个度为1的结点、有__(2)_个分支(非终端)结点和__(3)_个叶子,该满二叉树的深度为_(4)__。

9.假设根结点的层数为1,具有n个结点的二叉树的最大高度是______。

10.在一棵二叉树中,度为零的结点的个数为N0,度为2的结点的个数为N2,则有N0 =______

11.设只含根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为______,最小结点数为______。

12.设有N个结点的完全二叉树顺序存放在向量A[1:N]中,其下标值最大的分支结点为______。

13.高度为K的完全二叉树至少有______个叶子结点。

14.设F是由T1,T2,T3三棵树组成的森林,与F对应的二叉树为B,已知T1,T2,T3的结点数分别为n1,n2和n3则二叉树B的左子树中有__(1)_个结点,右子树中有_(2)__个结点。

15.一个深度为k的,具有最少结点数的完全二叉树按层次,(同层次从左到右)用自然数依此对结点编号,则编号最小的叶子的序号是__(1)_;编号是i的结点所在的层次号是_(2)__(根所在的层次号规定为1层)。

16.如某二叉树有20个叶子结点,有30个结点仅有一个孩子,则该二叉树的总结点数

为______。

17.如果结点A有3个兄弟,而且B是A的双亲,则B的度是______。

18.完全二叉树中,结点个数为n,则编号最大的分支结点的编号为______。

19.设一棵完全二叉树叶子结点数为k,最后一层结点数>2,则该二叉树的高度为______。

20.具有N个结点的二叉树,采用二叉链表存储,共有______个空链域。

21.8层完全二叉树至少有______个结点,拥有100个结点的完全二叉树的最大层数为______。

22.含4个度为2的结点和5个叶子结点的二叉树,可有______个度为1的结点。

23.一棵树T中,包括一个度为1的结点,两个度为2的结点,三个度为3的结点,四个度为4的结点和若干叶子结点,则T的叶结点数为______。

24.n(n大于1)个结点的树中,其深度最小的那棵树的深度是_(1)__,它共有_(2)__个叶子结点和_(3)__个非叶子结点;其中深度最大的那棵树的深度是_(4)__,它共有_(5)__个叶子结点和_(6)__个非叶子结点。

25.二叉树的先序序列和中序序列相同的条件是______。

26.已知一棵二叉树的前序序列为abdecfhg,中序序列为dbeahfcg,则该二叉树的根为_(1)__,左子树中有_(2)__,右子树中有_(3)__。

27.现有按中序遍历二叉树的结果为abc,问有_ __种不同的二叉树可以得到这一遍历结果。

28.若一个二叉树的叶子结点是某子树的中序遍历序列中的最后一个结点,则它必是该子树的______序列中的最后一个结点。

29.一棵左子树为空的二叉树在先序线索化后,其中的空链域的个数为:______。

30.若以{4,5,6,7,8}作为叶子结点的权值构造哈夫曼树,则其带权路径长度是______。

31.有数据WG={7,19,2,6,32,3,21,10},则所建Huffman树的树高是_(1)__,带权路径长度WPL为_(2)__。

32.有一份电文中共使用6个字符:a,b,c,d,e,f,它们的出现频率依次为2,3,4,7,8,9,试构造一棵哈夫曼树,则其加权路径长度WPL为_(1)__,字符c的编码是_(2)__。

33.设n0为哈夫曼树的叶子结点数目,则该哈夫曼树共有______个结点。

34.将二叉树bt中每一个结点的左右子树互换的C语言算法如下,其中ADDQ(Q,bt),DELQ(Q),EMPTY(Q)分别为进队,出队和判别队列是否为空的函数,请填写算法中得空白处,完成其功能。

typedef struct node

{int data ; struct node *lchild, *rchild; }btnode;

void EXCHANGE(btnode *bt)

{btnode *p, *q;

if (bt){ADDQ(Q,bt);

while(!EMPTY(Q))

{p=DELQ(Q); q=(1)___; p->rchild=__(2) _; __(3) _=q;

if(p->lchild) (4)___; if(p->rchild) (5)___;

}

} }

35.设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左,右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR 和叶子结点个数N0。N2、NL、NR、N0都是全局量,且在调用count(t)之前都置为0. typedef struct node

{int data; struct node *lchild,*rchild;}node;

int N2,NL,NR,N0;

void count(node *t)

{if (t->lchild!=NULL) if __(1) _ N2++; else NL++;

else if __(2)_ NR++; else _(3)_ ;

if(t->lchild!=NULL) __(4)__; if (t->rchild!=NULL) __(5)__;

} /*call form :if(t!=NULL) count(t);*/

36.下面是求二叉树高度的写的递归算法,试补充完整。二叉树的两指针域为lchild与rchild, 算法中p为二叉树的根,lh和rh分别为以p为根的二叉树的左子树和右子树的高,hi为以p为根的二叉树的高,hi最后返回。

height(p)

{if (__(1)_)

{if(p->lchild==null) lh=___(2)____; else lh=___(3)____;

if(p->rchild==null) rh=___(4)____; else rh=___(5)____;

if (lh>rh) hi=_(6)_;else hi=___(7)____;

}

else hi=___(8)____;

return hi;

}

37 阅读下列程序说明和程序,填充程序。

【程序说明】本程序完成将二叉树中左、右孩子交换的操作。本程序采用非递归的方法,设立一个堆栈stack存放还没有转换过的结点,它的栈顶指针为tp。交换左、右子树的算法为:

(1)把根结点放入堆栈。

(2)当堆栈不空时,取出栈顶元素,交换它的左、右子树,并把它的左、右子树分别入栈。

(3)重复(2)直到堆栈为空时为止。

typedef struct node *tree;

struct node{int data; tree lchild,rchild;}

exchange(tree t)

{tree r,p; tree stack [500]; int tp=0;

___(1)____

while (tp>=0)

{___(2)____

if(____(3)___)

{r=p->lchild; p->lchild=p->rchild; p->rchild=r

stack[___(4)____]=p->lchild; stack[++tp]=p->rchild;

}

}}

38.设一棵二叉树的结点定义为

struct BinTreeNode{

ElemType data; BinTreeNode *leftchild,*rightchild; }

现采用输入广义表表示建立二叉树。具体规定如下:

(1)树的根结点作为由子树构成的表的表名放在表的最前面;

(2)每个结点的左子树和右子树用逗号隔开。若仅有右子树没有左子树,逗号不能省略。(3)在整个广义表输入的结尾加上一个特殊的符号(例如―#‖)表示输入结束。

例如,对于如右图所示的二叉树,其广义表表示为A(B(D,E(G)),C(,F))。

此算法的基本思路是:依次从保存广义表的字符串ls中输入每个字符。若遇到的是字母(假设以字母作为结点的值),则表示是结点的值,应为它建立一个新的结点,并把该结点作为左子女(当k=1)或右子女(当k=2)链接到其双亲结点上。若遇到的是左括号―(‖,则表明子表的开始,将k置为1;若遇到的是右括号―)‖,则表明子表结束。若遇到的是逗号―,‖,则表示以左子女为根的子树处理完毕,接着处理以右子女为根的子树,将K置为2。在算法中使用了一个栈s,在进入子表之前,将根结点指针进栈,以便括号内的子女链接之用。在子表处理结束时退栈。相关的栈操作如下:

MakeEmpty(s) 置空栈Push(s,p) 元素p入栈

Pop(s) 退栈Top(s) 存取栈顶元素的函数

下面给出了建立二叉树的算法,其中有5个语句缺失,请阅读此算法并把缺失的语句补上。

void CreatBinTree(BinTreeNode *&BT,char ls){

Stacks; MakeEmpty(s);

BT=NULL; //置空二叉树

BinTreeNode *p;

int k; istream ins(ls);//把串ls定义为输入字符串流对象ins ;

char ch; ins>>ch; //从ins顺序读入一个字符

while (ch != ?#‘){ //逐个字符处理,直到遇到?#‘为止

switch(ch){

case ?(‘: __(1) _;k=1; break;

case ?)‘: pop(s); break;

case‘,‘ : _(2)__;break;

default :p=new BinTreeNode; _(3)_;p->leftChild=NULL;p->rightChild=NULL;

if(BT==NULL) __(4) _;else if (k==1) top(s)->leftChild=p;

else top(s)->rightChild=p;

}

__(5)__; } }

39.下列是先序遍历二叉树的非递归子程序,请阅读子程序填充空格,使其成为完整的算法。

void example(b)

btree *b;

{ btree *stack[20], *p;

int top;

if (b!=null)

{ top=1; stack[top]=b;

while (top>0)

{ p=stack[top]; top--;

printf(―%d‖,p->data);

if (p->rchild!=null)

{__(1)_; (2)___;

}

if (p->lchild!=null)

__(3)_; _(4)_;

}}}}

40.以下程序是二叉链表树中序遍历的非递归算法,请填空使之完善。二叉树链表的结点类型的定义如下:

typedef struct node /*C语言/

{char data; struct node *lchild,*rchild;}*bitree;

void vst(bitree bt) /*bt为根结点的指针*/

{ bitree p; p=bt; initstack(s); /*初始化栈s为空栈*/

while(p || !empty(s)) /*栈s不为空*/

if(p) { push (s,p); __(1)_; } /*P入栈*/

else { p=pop(s); printf(―%c‖,p->data); __(2)__; } /*栈顶元素出栈*/

}

41.二叉树存储结构同上题,以下程序为求二叉树深度的递归算法,请填空完善之。

int depth(bitree bt) /*bt为根结点的指针*/

{int hl,hr;

if (bt==NULL) return(__(1) _);

hl=depth(bt->lchild); hr=depth(bt->rchild);

if(_(2)__) ___(3)__;

return(hr+1);

}

42.由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树,下面程序的作用是实现由已知某二叉树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序遍历序列,请写出程序所缺的语句。

#define MAX 100

typedef struct Node

{char info; struct Node *llink, *rlink; }TNODE;

char pred[MAX],inod[MAX];

main(int argc,int **argv)

{ TNODE *root;

if(argc<3) exit 0;

strcpy(pred,argv[1]); strcpy(inod,argv[2]);

root=restore(pred,inod,strlen(pred));

postorder(root);

}

TNODE *restore(char *ppos,char *ipos,int n)

{ TNODE *ptr;char *rpos; int k;

if(n<=0) return NULL;

ptr->info=___(1)____;

for(____(2)___ ; rpos

k=____(3)___;

ptr->llink=restore(ppos+1, ___(4)____,k );

ptr->rlink=restore (___(5)____+k,rpos+1,n-1-k);

return ptr;

}

postorder(TNODE*ptr)

{ if(ptr=NULL) return;

postorder(ptr->llink); postorder(ptr->rlink); printf(―%c‖,ptr->info);

}

43.下面是中序线索树的遍历算法,树有头结点且由指针thr指向。树的结点有五个域,

分别为数据域data,左、右孩子域lchild、rchild和左、右标志域ltag,rtag。规定,标志域为1是线索,O是指向孩子的指针。

inordethread(thr)

{p=thr->lchild;

while (___(1)___)

{ while(__(2)___) p= _(3)__;

printf(p->data);

while(_____(4)____) { p=__(5) _;printf(p->data);}

p= _(6) ;}

}

44.线索二叉树有数据域data,左右孩子域lchild和rchild,左右标志ltag及rtag,规定标志为1对应的孩子域是线索,0则为指向孩子的指针。规定在储存线索二叉树时,完成下面中序线索化过程。(存储线索二叉树,不增加头结点,只在原有的由tree指向的二叉树中增加线索,此处也不考虑c语言的具体语法与约定,线索化前所有的标志tag都是0)。

/* pre是同tree类型相同的指针,初值是null */

thread_inorder (tree)

{ if(tree!=null)

{ thread_inorder(__(1)__);

if(tree->lchild==___(2)___) { tree->ltag=1; tree->lchild=pre; }

if((3)___ == null){ ___(4)____; __(5)_____;}

pre=p; thread-inorder(___(6)____);

}

}

45.如下的算法分别是后序线索二叉树求给定结点node 的前驱结点与后继结点的算法,请在算法空格处填上正确的语句。设线索二叉树的结点数据结构为(lflag,left,data,right,rflag),其中:lflag= 0,left 指向其左孩子,lflag= 1,left 指向其前驱;rflag=0,right 指向其右孩子,rflag=1,right 指向其后继。

prior(node,x)

{ if (node !=null)

if (__(1)___ ) *x=node->right; else *x=node->left;

}

next(bt, node, x) /*bt是二叉树的树根*/

{___(2)__;

if (node!=bt && node!=null)

if (node->rflag) ___(3)____ ;

else {do t=*x; ___(4)___;while (*x==node); *x=t; }

}

四、应用题

1.从概念上讲,树,森林和二叉树是三种不同的数据结构,将树,森林转化为二叉树的基本目的是什么,并指出树和二叉树的主要区别。

2.树和二叉树之间有什么样的区别与联系?

3.请分析线性表、树、广义表的主要结构特点,以及相互的差异与关联。

4.将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为二叉树。

5. 一棵有n(n>0)个结点的d度树, 若用多重链表表示, 树中每个结点都有d个链域, 则在表示该树的多重链表中有多少个空链域? 为什么?

6. 一棵二叉树中的结点的度或为0或为2,则二叉树的枝数为2(n0-1),其中n0是度为0的结点的个数。

7.一个深度为L的满K叉树有以下性质:第L层上的结点都是叶子结点,其余各层上每个结点都有K棵非空子树,如果按层次顺序从1开始对全部结点进行编号,求:1)各层的结点的数目是多少?

2)编号为n的结点的双亲结点(若存在)的编号是多少?

3)编号为n的结点的第i 个孩子结点(若存在)的编号是多少?

4)编号为n的结点有右兄弟的条件是什么?如果有,其右兄弟的编号是多少?

请给出计算和推导过程。

8.证明任一结点个数为n 的二叉树的高度至少为O(logn).

9.有n个结点并且其高度为n的二叉树的数目是多少?

10.已知完全二叉树的第七层有10个叶子结点,则整个二叉树的结点数最多是多少?

11.高度为10的二叉树,其结点最多可能为多少?

12.任意一个有n个结点的二叉树,已知它有m个叶子结点,试证明非叶子结点有(m-1)

个度为2,其余度为1。

13. 已知A[1..N]是一棵顺序存储的完全二叉树,如何求出A[i]和A[j]的最近的共同祖先?

14.给定K(K>=1),对一棵含有N 个结点的K 叉树(N >0)、请讨论其可能的最大高度和最小高度。

15.已知一棵满二叉树的结点个数为20到40之间的素数,此二叉树的叶子结点有多少个?

16.一棵共有n 个结点的树,其中所有分支结点的度均为K ,求该树中叶子结点的个数。

17. 如在内存中存放一个完全二叉树,在树上只进行下面两个操作:

(1)寻找某个结点双亲 (2)寻找某个结点的儿子;

请问应该用何种结构来存储该二叉树?

18.求含有n 个结点、采用顺序存储结构的完全二叉树中的序号最小的叶子结点的下标。要求写出简要步骤。

19.设二叉树T 中有n 个顶点,其编号为1,2,3,…,n,若编号满足如下性质:

(1)T 中任一顶点v 的编号等于左子树中最小编号减1;

(2)对T 中任一顶点v,其右子树中最小编号等于其左子树中的最大编号加1。试说明对二叉树中顶点编号的规则(按何种顺序编号)。

20.若一棵树中有度数为1至m 的各种结点数为n 1,n 2,…,n m (n m 表示度数为m 的结点个数)请推导出该树中共有多少个叶子结点n 0的公式。

21.若一棵完全二叉树中叶子结点的个数为n,且最底层结点数≧2,则此二叉树的深度H=?

22.已知完全二叉树有30个结点,则整个二叉树有多少个度为0的结点?

23.试证明,在具有n(n>=1)个结点的m 次树中,有n(m-1)+1个指针是空的。

24.对于任何一棵非空的二叉树,假设叶子结点的个数为n 0,而次数为2的结点个数为n 2,请给出n 0和n 2之间所满足的关系式n 0=f(n 2).要求给出推导过程。

25.试求有n 个叶结点的非满的完全二叉树的高度。

26.对于具有n 个叶子结点,且所有非叶子结点都有左右孩子的二叉树,

(1)试问这种二叉树的结点总数是多少?

(2)试证明(1)12

1i n

l i --==∑。其中:l i 表示第i 个叶子结点所在的层号(设根结点所在层号为1)。

27.假设高度为H的二叉树上只有度为0和度为2的结点,问此类二叉树中的结点数可能达到的最大值和最小值各为多少?

28.一棵满k叉树,按层次遍历存储在一维数组中,试计算结点下标的u的结点的第i 个孩子的下标以及结点下标为v的结点的父母结点的下标。

29.一棵非空的有向树中恰有一个顶点入度为0, 其它顶点入度为1,但一个恰有一个顶点入度为0,其它顶点入度为1的有向图却不一定是一棵有向树,请举例说明。

30.对于一个堆栈,若其入栈序列为1,2,3,…,n,不同的出入栈操作将产生不同的出栈序列。其出栈序列的个数正好等于结点个数为n的二叉树的个数,且与不同形态的二叉树一一对应。请简要叙述一种从堆栈输入(固定为1,2,3……n)/输出序列对应一种二叉树形态的方法,并以入栈序列1,2,3(即n=3)为例加以说明。

31.如果给出了一个二叉树结点的前序序列和中序序列,能否构造出此二叉树?若能,请证明之。若不能,请给出反例。如果给出了一个二叉树结点的前序序列和后序序列,能否构造出此二叉树?若能,请证明之。若不能,请给出反例。

32.试证明:同一棵二叉树的所有叶子结点,在前序序列。中序序列以及后序序列中都按相同的相对位置出现(即先后顺序相同),例如前序abc,后序bca中序bac。

33.由二叉树的中序序列及前序序列能唯一的建立二叉树,试问中序序列及后序序列是否也能唯一的建立二叉树,不能则说明理由,若能对中序序列DBEAFGC和后序序列DEBGFCA构造二叉树。

34.设一棵二叉树的前序序列为ABDGECFH,中序序列为:DGBEAFHC 。试画出该二叉树。

35.①试找出满足下列条件的二叉树

1)先序序列与后序序列相同2)中序序列与后序序列相同

3)先序序列与中序序列相同4)中序序列与层次遍历序列相同

②已知一棵二叉树的中序序列和后序序列分别为DBEAFIHCG和DEBHIFGCA,画出这棵二叉树。

36.将下列由三棵树组成的森林转换为二叉树。(只要求给出转换结果)

37.设一棵二叉树先序遍历序列:A B D F C E G H ,中序遍历序列:B F D A G E H C

(1)画出这棵二叉树。

(2)画出这棵二叉树的后序线索树。

(3)将这棵二叉树转换成对应的树(或森林)。

38.设某二叉树的前序遍历序列为:ABCDEFGGI,中序遍历序列为:BCAEDGHFI:(1)试画出该二叉树;

(2)写出由给定的二叉树的前序遍历序列和中序遍历序列构造出该二叉树的算法。

(3)设具有四个结点的二叉树的前序遍历序列为abcd;S为长度等于四的由a,b,c,d排列构成的字符序列,若任取S作为上述算法的中序遍历序列,试问是否一定能构造出相应的二叉树,为什么?试列出具有四个结点二叉树的全部形态及相应的中序遍历序列。

39. 假设一棵二叉树的前序序列为ABCD,它的中序序列可能是DABC吗?

40.一棵非空的二叉树其先序序列和后序序列正好相反,画出这棵二叉树的形状。

51.已知一棵二叉树的后序遍历序列为EICBGAHDF,同时知道该二叉树的中序遍历序列为CEIFGBADH,试画出该二叉树。

41.假设一棵二叉树的层次序列为ABCDEFGHIJ,中序序列DBGEHJACIF。请画出这棵二叉树。

42.已知一个森林的先序序列和后序序列如下,请构造出该森林。

先序序列:ABCDEFGHIJKLMNO

后序序列:CDEBFHIJGAMLONK

43.画出同时满足下列两条件的两棵不同的二叉树。

(1)按先根序遍历二叉树顺序为ABCDE。

(2)高度为5其对应的树(森林)的高度最大为4。

44.用一维数组存放的一棵完全二叉树;ABCDEFGHIJKL。请写出后序遍历该二叉树的访问结点序列。

45.一棵二叉树的先序、中序、后序序列如下,其中一部分未标出,请构造出该二叉树。先序序列:_ _ C D E _ G H I _ K

中序序列:C B _ _ F A _ J K I G

后序序列:_ E F D B _ J I H _ A

46.M 叉树的前序和后序遍历分别与由它转换成的二叉树的哪种遍历相对应?

47.下表中M﹑N分别是一棵二叉树中的两个结点,表中行号i=1,2,3,4分别表示四种M﹑N的相对关系,列号j=1,2,3分别表示在前序、中序、后序遍历中M,N之间的先后次序关系。要求在i,j所表示的关系能够发生的方格内打上对号。例如:如果你认为n 是m的祖先,并且在中序遍历中n能比m先被访问,则在(3,2)格内打上对号

48.设树形T在后根次序下的结点排列和各结点相应的次数如下:

后根次序:BDEFCGJKILHA

次数:000030002024

请画出T的树形结构图。

49.已知二叉树采用二叉链表方式存放,要求返回二叉树T的后序序列中的第一个结点的指针,是否可不用递归且不用栈来完成?请简述原因。

50.对于二叉树T的两个结点n1和n2,我们应该选择树T结点的前序、中序和后序中哪两个序列来判断结点n1必定是结点n2的祖先,并给出判断的方法。不需证明判断方法的正确性。

51.设二叉树的存储结构如下

其中,T为树根结点的指针,LLINK、RLINK分别指向结点的左右子女,INFO为其数据域,请完成下列各题:

(1)画出二叉树T的逻辑结构. (2)写出按前序、中序和后序周游二叉树T得到的结点序列.

(3)画出二叉树T的后序线索树。

52.在二叉树的Llink-Rlink 存储表示中,引入―线索‖的好处是什么?

53.按下面要求解下图中二叉树的有关问题:

(1)对此二叉树进行后序后继线索化 ;

(2)将此二叉树变换为森林;

(3)用后根序遍历该森林,写出遍历

后的结点序列。

54.对下图所示二叉树分别按前序﹑中序﹑后序遍历, 给出相应的结点序列,同时给二叉树加上中序线索。

55. 假设一个二叉树的两种遍历如下:

前序:ABFGCHDEIJLK 中序:FGBHCDILJKEA

(1)画出这棵二叉树以及它的中序线索树;

(2)写出在中序线索树的情况下,找到结点N 的前驱结点的算法inorder-prior(n,x)

56.已知一棵二叉树的中序(或中根)遍历结点序列为DGBAECHIF ,后序(或后根)遍历结点排列为GDBEIHFCA ,

(1)试画出该二叉树;

(2)试画出该二叉树的中序穿线(或线索)树;

(3)试画出该二叉树(自然)对应的森林;

57.设二叉树BT 的存储结构如下:

1 2 3 4 5 6 7 8 9 10

树和二叉树习题集与答案解析

一、填空题 1. 不相交的树的聚集称之为森林。 2. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_树可采用孩子-兄弟链表(二叉链表)做存储结构,目的是利用二叉树的已有算法解决树的有关问题。 3. 深度为k的完全二叉树至少有2 k-1个结点。至多有2 k-1个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是2 k-2+1。 4. 在一棵二叉树中,度为零的结点的个数为n 0,度为2的结点的个数为n 2,则有n0= n2+1。 5. 一棵二叉树的第i(i≥1)层最多有2 i-1个结点;一棵有n(n>0)个结点的满二叉树共有(n+1)/2个叶子和(n-1)/2个非终端结点。 6.现有按中序遍历二叉树的结果为abc,问有5种不同形态的二叉树 可以得到这一遍历结果。 7. 哈夫曼树是带权路径最小的二叉树。 8. 前缀编码是指任一个字符的编码都不是另一个字符编码的前缀的一种编码方法,是设计不等长编码的前提。 9. 以给定的数据集合{4,5,6,7,10,12,18}为结点权值构造的Huffman树的加权路径长度是165 。 10. 树被定义为连通而不具有回路的(无向)图。 11. 若一棵根树的每个结点最多只有两个孩子,且孩子又有左、右之分,次序不能颠倒,则称此根树为二叉树。

12. 高度为k,且有个结点的二叉树称为二叉树。 2k-1 满 13. 带权路径长度最小的二叉树称为最优二叉树,它又被称为树。 Huffman 14. 在一棵根树中,树根是为零的结点,而为零的结点是 结点。 入度出度树叶 15. Huffman树中,结点的带权路径长度是指由到之间的路径长度与结点权值的乘积。 结点树根 16. 满二叉树是指高度为k,且有个结点的二叉树。二叉树的每一层i上,最多有个结点。 2k-1 2i-1 二、单选题 1. 具有10个叶结点的二叉树中有(B) 个度为2的结点。 (A)8 (B)9 (C)10 (D)11 2.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用_(3)次序的遍历实现编号。 (1)先序(2)中序 (3)后序(4)从根开始按层遍历 3. 由2、3、4、7作为结点权值构造的树的加权路径长度 B 。

数据结构-6 树和二叉树

第六章树和二叉树 一.选择题 1. 以下说法错误的是。 A.树形结构的特点是一个结点可以有多个直接前趋 B.线性结构中的一个结点至多只有一个直接后继 C.树形结构可以表达(组织)更复杂的数据 D.树(及一切树形结构)是一种"分支层次"结构 2. 如图6-2所示的4 棵二叉树中,不是完全二叉树。 图6-2 4 棵二叉树 3. 在线索化二叉树中,t 所指结点没有左子树的充要条件是。 A. t->left == NULL B. t->ltag==1 C. t->ltag==1 且t->left==NULL D .以上都不对 4. 以下说法错误的是。 A.二叉树可以是空集 B.二叉树的任一结点最多有两棵子树 C.二叉树不是一种树 D.二叉树中任一结点的两棵子树有次序之分 5. 以下说法错误的是。 A.完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达 B.在三叉链表上,二叉树的求双亲运算很容易实现 C.在二叉链表上,求根,求左、右孩子等很容易实现 D.在二叉链表上,求双亲运算的时间性能很好 6. 如图6-3所示的4 棵二叉树,是平衡二叉树。

图6-3 4 棵二叉树 7. 如图6-4所示二叉树的中序遍历序列是。 A. abcdgef B. dfebagc C. dbaefcg D. defbagc 图6-4 1 棵二叉树 8. 已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是。 A. acbed B. decab C. deabc D. cedba 9. 如果T2 是由有序树T 转换而来的二叉树,那么T 中结点的前序就是T2 中结点的。 A. 前序 B.中序 C. 后序 D. 层次序 10. 某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是。 A. bdgcefha B. gdbecfha C. bdgaechf D. gdbehfca 11. 将含有83个结点的完全二叉树从根结点开始编号,根为1号,后面按从上到下、从左到右的顺序对结点编号,那么编号为41的双亲结点编号为。 A.42 B.40 C.21 D.20 12. 一棵二叉树如图6-5所示,其后序遍历的序列为。 A. abdgcefh B. dgbaechf C. gdbehfca D. abcdefgh

目前最完整的数据结构1800题包括完整答案树和二叉树答案

第6章树和二叉树 部分答案解释如下。 12. 由二叉树结点的公式:n=n0+n1+n2=n0+n1+(n0-1)=2n0+n1-1,因为n=1001,所以1002=2n0+n1,在完全二叉树树中,n1只能取0或1,在本题中只能取0,故n=501,因此选E。 42.前序序列是“根左右”,后序序列是“左右根”,若要这两个序列相反,只有单支树,所以本题的A和B均对,单支树的特点是只有一个叶子结点,故C是最合适的,选C。A或B 都不全。由本题可解答44题。 47. 左子树为空的二叉树的根结点的左线索为空(无前驱),先序序列的最后结点的右线索为空(无后继),共2个空链域。 52.线索二叉树是利用二叉树的空链域加上线索,n个结点的二叉树有n+1个空链域。 部分答案解释如下。 6.只有在确定何序(前序、中序、后序或层次)遍历后,遍历结果才唯一。 19.任何结点至多只有左子树的二叉树的遍历就不需要栈。 24. 只对完全二叉树适用,编号为i的结点的左儿子的编号为2i(2i<=n),右儿子是2i+1(2i+1<=n) 37. 其中序前驱是其左子树上按中序遍历的最右边的结点(叶子或无右子女),该结点无右孩子。 38 . 新插入的结点都是叶子结点。 42. 在二叉树上,对有左右子女的结点,其中序前驱是其左子树上按中序遍历的最右边的结点(该结点的后继指针指向祖先),中序后继是其右子树上按中序遍历的最左边的结点(该结点的前驱指针指向祖先)。 44.非空二叉树中序遍历第一个结点无前驱,最后一个结点无后继,这两个结点的前驱线索和后继线索为空指针。 三.填空题

1.(1)根结点(2)左子树(3)右子树 2.(1)双亲链表表示法(2)孩子链表表示法(3)孩 子兄弟表示法 3.p->lchild==null && p->rchlid==null 4.(1) ++a*b3*4-cd (2)18 5.平衡 因子 6. 9 7. 12 8.(1)2k-1 (2)2k-1 9.(1)2H-1 (2)2H-1 (3)H=?log2N?+1 10. 用顺序存储二叉树时,要按完全二叉树的形式存储,非完全二叉树存储时,要加“虚结 点”。设编号为i和j的结点在顺序存储中的下标为s 和t ,则结点i和j在同一层上的条 件是?log2s?=?log2t?。 11. ?log2i?=?log2j?12.(1)0 (2)(n-1)/2 (3)(n+1)/2 (4) ?log2n?+1 13.n 14. N2+1 15.(1) 2K+1-1 (2) k+1 16. ?N/2? 17. 2k-2 18. 64 19. 99 20. 11 21.(1) n1-1 (2)n2+n3 22.(1)2k-2+1(第k层1个结点,总结点个数是2H-1,其双亲是2H-1/2=2k-2)(2) ?log2i?+1 23.69 24. 4 25.3h-1 26. ?n/2? 27. ?log2k?+1 28.(1)完全二叉树 (2)单枝树,树中任一结点(除最后一个结点是叶子外),只有左子女或 只有右子女。 29.N+1 30.(1) 128(第七层满,加第八层1个) (2) 7 31. 0至多个。任意二叉树,度为1的结点个数没限制。只有完全二叉树,度为1的结点个 数才至多为1。 32.21 33.(1)2 (2) n-1 (3) 1 (4) n (5) 1 (6) n-1 34.(1) FEGHDCB (2)BEF(该二叉树转换成森林,含三棵树,其第一棵树的先根次序是 BEF) 35.(1)先序(2)中序 36. (1)EACBDGF (2)2 37.任何结点至多只有右子女 的二叉树。 38.(1)a (2) dbe (3) hfcg 39.(1) . (2) ...GD.B...HE..FCA 40.DGEBFCA 41.(1)5 (2)略 42.二叉排序树 43.二叉树 44. 前序 45.(1)先根次序(2)中根次序46.双亲的右子树中最左下的叶子结点47.2 48.(n+1)/2 49.31(x的后继是经x的双亲y的右子树中最左下的叶结点) 50.(1)前驱 (2)后 继 51.(1)1 (2)y^.lchild (3)0 (4)x (5)1 (6) y (7)x(编者注:本题按 中序线索化) 52.带权路径长度最小的二叉树,又称最优二叉树 53.69 54.(1)6 (2)261 55.(1)80 (2)001(不唯一)56.2n0-1 57.本题①是表达式求值,②是在二叉排序树中删除值为x的结点。首先查找x,若没有x, 则结束。否则分成四种情况讨论:x结点有左右子树;只有左子树;只有右子树和本身是叶 子。 (1)Postoder_eval(t^.Lchild) (2) Postorder_eval(t^.Rchild) (3)ERROR(无此运 算符)(4)A (5)tempA^.Lchild (6)tempA=NULL(7)q^.Rchild (8)q (9)tempA^.Rchild (10)tempA^.Item

二叉树习题及答案

1.设一棵完全二叉树共有699 个结点,则在该二叉树中的叶子结点数? 1根据二叉树的第i层至多有2A(i - 1)个结点;深度为k的二叉树至多有2A k - 1 个结点(根结点的深度为1)”这个性质: 因为2A9-1 < 699 < 2A10-1 , 所以这个完全二叉树的深度是10,前9 层是一个满二叉树, 这样的话,前九层的结点就有2A9-1=511 个;而第九层的结点数是2A(9-1)=256 所以第十层的叶子结点数是699-511=188 个;现在来算第九层的叶子结点个数。由于第十层的叶子结点是从第九层延伸的,所以应该去掉第九层中还有子树的结点。因为第十层有188 个,所以应该去掉第九层中的188/2=94 个;所以,第九层的叶子结点个数是256-94=162,加上第十层有188 个,最后结果是350 个 2完全二叉树:若二叉树中最多只有最下面两层的结点的度可以小于2,并且最下面一层的结点 (叶结点) 都依次排列在该层最左边的位置上,这样的二叉树为完全二叉树。 比如图:完全二叉树除叶结点层外的所有结点数(叶结点层以上所有结点数)为奇数,此题中,699 是奇数,叶结点层以上的所有结点数为保证是奇数,则叶结点数必是偶数,这样我们可以立即选出答案为B!如果完全二叉树的叶结点都排满了,则是满二叉树,易得满二叉树的叶结点数是其以上所有层结点数+1 比如图: 此题的其实是一棵满二叉树,我们根据以上性质,699+1=700,700/2=350,即叶结点数为350,叶结点层以上所有结点数为350-1=349。 3完全二叉树中,只存在度为2 的结点和度为0 的结点,而二叉树的性质中有一条是: nO=n2+1 ; nO指度为0的结点,即叶子结点,n2指度为2的结点,所以2n2+1=699 n2=349 ; n0=350 2.在一棵二叉树上第 5 层的结点数最多是多少一棵二叉树,如果每个结点都是是满的,那么会满足2A(k-1)1 。所以第5 层至多有2A(5-1)=16 个结点! 3.在深度为5 的满二叉树中,叶子结点的个数为答案是16 ~ 叶子结点就是没有后件的结点~ 说白了~ 就是二叉树的最后一层~ 深度为K 的二叉树~ 最多有2Ak-1 个结点~ 最多有2A(k-1) 个结点~ 所以此题~ 最多有2A5-1=31 个结点~ 最多有2A(5-1)=16 个叶子结点~ 4.某二叉树中度为2 的结点有18 个,则该二叉树中有几个叶子结点?结点的度是指树中每个结点具有的子树个数或者说是后继结点数。 题中的度为2 是说具有的2 个子树的结点;二叉树有个性质:二叉树上叶子结点数等于度为2 的结点数加1。 5.在深度为7 的满二叉树中,度为2 的结点个数为多少,就是第一层只有一个节点,他有两个子节点,第二层有两个节点,他们也都有两个子节点以此类推,所以到第6 层,就有2的5次方个节点,他们都有两个子节点最后第7 层都没有子节点了。因为是深度为7 的。 所以就是1+2+4+8+16+32 了 2深度为1的时候有0个 深度为2的时候有1个 深度为3的时候有3个 深度为4的时候有7个 深度为n的时候有(2的n-1次方减1 )个 6?—棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为?

树和二叉树习题数据结构

习题六树和二叉树一、单项选择题 1.以下说法错误的是 ( ) A.树形结构的特点是一个结点可以有多个直接前趋B.线性结构中的一个结点至多只有一个直接后继 C.树形结构可以表达(组织)更复杂的数据 D.树(及一切树形结构)是一种"分支层次"结构 E.任何只含一个结点的集合是一棵树 2.下列说法中正确的是 ( ) A.任何一棵二叉树中至少有一个结点的度为2 B.任何一棵二叉树中每个结点的度都为2 C.任何一棵二叉树中的度肯定等于2 D.任何一棵二叉树中的度可以小于2 3.讨论树、森林和二叉树的关系,目的是为了()A.借助二叉树上的运算方法去实现对树的一些运算B.将树、森林按二叉树的存储方式进行存储

C.将树、森林转换成二叉树 D.体现一种技巧,没有什么实际意义 4.树最适合用来表示 ( ) A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C.15 D.不确定 6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。与森林F对应的二叉树根结点的右子树上的结点个数是()。 A.M1 B.M1+M2 C.M3 D.M2+M3 7.一棵完全二叉树上有1001个结点,其中叶子结点的个数是() A. 250 B. 500 C.254 D.505 E.以上答案都不对 8. 设给定权值总数有n 个,其哈夫曼树的结点总数为( ) A.不确定 B.2n C.2n+1 D.2n-1 9.二叉树的第I层上最多含有结点数为() A.2I B. 2I-1-1 C. 2I-1 D.2I -1

数据结构第六章树和二叉树习题及答案

习题六树和二叉树 一、单项选择题 1.以下说法错误的是() A. 树形结构的特点是一个结点可以有多个直接前趋 B. 线性结构中的一个结点至多只有一个直接后继 C. 树形结构可以表达(组织)更复杂的数据 D. 树(及一切树形结构)是一种”分支层次”结构 E. 任何只含一个结点的集合是一棵树 2. 下列说法中正确的是() A. 任何一棵二叉树中至少有一个结点的度为2 B. 任何一棵二叉树中每个结点的度都为2 C. 任何一棵二叉树中的度肯定等于2 D. 任何一棵二叉树中的度可以小于2 3. 讨论树、森林和二叉树的关系,目的是为了() A. 借助二叉树上的运算方法去实现对树的一些运算 B. 将树、森林按二叉树的存储方式进行存储 C. 将树、森林转换成二叉树 D. 体现一种技巧,没有什么实际意义4.树最适合用来表示() A. 有序数据元素 B .无序数据元素 C.元素之间具有分支层次关系的数据 D .元素之间无联系的数据 5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B .11 C .15 D .不确定 6. 设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1, M2和M3与森林F 对应的二叉树根结点的右子树上的结点个数是()。 A.M1 B .M1+M2 C .M3 D .M2+M3 7.一棵完全二叉树上有1001个结点,其中叶子结点的个数是() A.250 B .500 C .254 D .505 E .以上答案都不对 8. 设给定权值总数有n 个,其哈夫曼树的结点总数为() A. 不确定 B . 2n C . 2n+1 D . 2n-1 9.二叉树的第I 层上最多含有结点数为() I I-1 I-1 I A.2I B .2 I-1 -1 C .2 I-1 D .2 I -1 10.一棵二叉树高度为h, 所有结点的度或为0,或为2,则这棵二叉树最少有()结点A.2h B .2h-1 C .2h+1 D .h+1 11. 利用二叉链表存储树,则根结点的右指针是()。 A.指向最左孩子 B .指向最右孩子 C .空D .非空 12.已知一棵二叉树的前序遍历结果为为()。 A.CBEFDA B .FEDCBA 13.已知某二叉树的后序遍历序列是()。 ABCDEF中序遍历结果 为 C .CBEDFA D dabec, 中序遍历序列是 CBAEDF则后序遍历的结 果 .不定 debac , 它的前序遍历是

数据结构树和二叉树习题

树与二叉树 一.选择题 1.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结 点数为()个。 A.15B.16C.17D.47 2.按照二叉树的定义,具有3个结点的不同形状的二叉树有()种。 A. 3 B. 4 C. 5 D. 6 3.按照二叉树的定义,具有3个不同数据结点的不同的二叉树有()种。 A. 5 B. 6 C. 30 D. 32 4.深度为5的二叉树至多有()个结点。1 A. 16 B. 32 C. 31 D. 10 5.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的 结点数至少为()。 A. 2h B. 2h-1 C. 2h+1 D. h+1 6.对一个满二叉树2,m个树叶,n个结点,深度为h,则()。 A. n=h+m3 B. h+m=2n C. m=h-1 D. n=2 h-1 1深度为n的二叉树结点至多有2n-1 2满二叉树是除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树7.任何一棵二叉树的叶结点在先序.中序和后序遍历序列中的相对次序()。 A.不发生改变 B.发生改变 C.不能确定 D.以上都不对 8.如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉 树的后序为()。 A. uwvts B. vwuts C. wuvts D. wutsv 9.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是()。 A. bdgcefha B. gdbecfha C. bdgaechf D. gdbehfca 10.在一非空二叉树的中序遍历序列中,根结点的右边()。 A. 只有右子树上的所有结点 B. 只有右子树上的部分结点 C. 只有左子树上的部分结点 D. 只有左子树上的所有结点 11.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为 先序遍历.中序遍历和后序遍历。这里,我们把由树转化得到的二叉树4叫做这棵数对应的二叉树。结论()是正确的。 A.树的先根遍历序列与其对应的二叉树的先序遍历序列相同 B.树的后根遍历序列与其对应的二叉树的后序遍历序列相同 3对于深度为h的满二叉树,n=20+21+…+2h-1=2h-1,m=2h-1。故而n=h+m。 4树转化为二叉树的基本方法是把所有兄弟结点都用线连起来,然后去掉双亲到子女的连线,只留下双亲到第一个子女的连线。因此原来的兄弟关系就变为双亲与右孩子的关系。 1/ 9

第6章树和二叉树习题

第六章 树和二叉树 一、选择题 1.算术表达式a+b*(c+d/e )转为后缀表达式后为( B ) A .ab+cde/* B .abcde/+*+ C .abcde/*++ D .2. 设有一表示算术表达式的二叉树(见下图), 它所表示的算术表达式是( C ) A. A*B+C/(D*E)+(F-G) B. (A*B+C)/(D*E)+(F-G) C. (A*B+C)/(D*E+(F-G )) D. A*B+C/D*E+F-G 3. 设树T 的度为4,其中度为1,2,3和4的结点个数分别为4,2,1 ,1 则T 中的叶子数为( D ) A .5 B .6 C .7 D .8 4. 在下述结论中,正确的是( D ) ①只有一个结点的二叉树的度为0; ②二叉树的度为2; ③二叉树的左右子树可任意 交换; ④深度为K 的完全二叉树的结点个数小于或等于深度相同的满二叉树。 A .①②③ B .②③④ C .②④ D .①④ 5. 设森林F 对应的二叉树为B ,它有m 个结点,B 的根为p,p 的右子树结点个数为n,森林F 中第一棵树的结点个数是( A ) A .m-n B .m-n-1 C .n+1 D .条件不足,无法确定 6.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( B ) A .9 B .11 C .15 D .不确定 7.设森林F 中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。与森林F 对应的二叉树根结点的右子树上的结点个数是( D )。 A .M1 B .M1+M2 C .M3 D .M2+M3 8.一棵完全二叉树上有1001个结点,其中叶子结点的个数是( E ) A . 250 B . 500 C .254 D .505 E .以上答案都不对 9. 有关二叉树下列说法正确的是( B ) A .二叉树的度为2 B .一棵二叉树的度可以小于2 C .二叉树中至少有一个结点的度为2 D .二叉树中任何一个结点的度都为2 10.二叉树的第I 层上最多含有结点数为( C ) A .2I B . 2I-1-1 C . 2I-1 D .2I -1 11. 一个具有1025个结点的二叉树的高h 为( C ) A .11 B .10 C .11至1025之间 D .10至1024之间 12.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( B )结点 A .2h B .2h-1 C .2h+1 D .h+1 13. 一棵树高为K 的完全二叉树至少有( C )个结点 A .2k –1 B. 2k-1 –1 C. 2k-1 D. 2 k 14.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( C )次序的遍历 实现编号。 A .先序 B. 中序 C. 后序 D. 从根开始按层次遍历 15.一棵二叉树的前序遍历序列为ABCDEFG ,它的中序遍历序列可能是( B )

二叉树习题及答案

1.设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数? 1根据“二叉树的第i层至多有2^(i ? 1)个结点;深度为k的二叉树至多有2^k ? 1个结点(根结点的深度为1)”这个性质: 因为2^9-1 < 699 < 2^10-1 ,所以这个完全二叉树的深度就是10,前9层就是一个满二叉树, 这样的话,前九层的结点就有2^9-1=511个;而第九层的结点数就是2^(9-1)=256 所以第十层的叶子结点数就是699-511=188个; 现在来算第九层的叶子结点个数。 由于第十层的叶子结点就是从第九层延伸的,所以应该去掉第九层中还有子树的结点。因为第十层有188个,所以应该去掉第九层中的188/2=94个; 所以,第九层的叶子结点个数就是256-94=162,加上第十层有188个,最后结果就是350个 2完全二叉树:若二叉树中最多只有最下面两层的结点的度可以小于2,并且最下面一层的结点(叶结点)都依次排列在该层最左边的位置上,这样的二叉树为完全二叉树。 比如图: 完全二叉树除叶结点层外的所有结点数(叶结点层以上所有结点数)为奇数,此题中,699就是奇数,叶结点层以上的所有结点数为保证就是奇数,则叶结点数必就是偶数,这样我们可以立即选出答案为B! 如果完全二叉树的叶结点都排满了,则就是满二叉树,易得满二叉树的叶结点数就是其以上所有层结点数+1比如图: 此题的其实就是一棵满二叉树,我们根据以上性质,699+1=700,700/2=350,即叶结点数为350,叶结点层以上所有结点数为350-1=349。 3完全二叉树中,只存在度为2的结点与度为0的结点,而二叉树的性质中有一条就是:n0=n2+1;n0指度为0的结点,即叶子结点,n2指度为2的结点,所以2n2+1=699 n2=349;n0=350 2.在一棵二叉树上第5层的结点数最多就是多少 一棵二叉树,如果每个结点都就是就是满的,那么会满足2^(k-1)1。 所以第5层至多有2^(5-1)=16个结点! 3、在深度为5的满二叉树中,叶子结点的个数为 答案就是16 ~ 叶子结点就就是没有后件的结点~ 说白了~ 就就是二叉树的最后一层~ 深度为K的二叉树~ 最多有2^k-1个结点~ 最多有2^(k-1)个结点~ 所以此题~ 最多有2^5-1=31个结点~ 最多有2^(5-1)=16个叶子结点~ 4、某二叉树中度为2的结点有18个,则该二叉树中有几个叶子结点? 结点的度就是指树中每个结点具有的子树个数或者说就是后继结点数。 题中的度为2就是说具有的2个子树的结点; 二叉树有个性质:二叉树上叶子结点数等于度为2的结点数加1。 5、在深度为7的满二叉树中,度为2的结点个数为多少, 就就是第一层只有一个节点,她有两个子节点,第二层有两个节点,她们也都有两个子节点以此类推,所以到第6层,就有2的5次方个节点,她们都有两个子节点 最后第7层都没有子节点了。因为就是深度为7的。 所以就就是1+2+4+8+16+32了

各类型二叉树例题说明

5.1树的概念 树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树 1.树的度——也即是宽度,简单地说,就是结点的分支数。以组成该树各结点中最大的度作为该树的度,如上图的树,其度为3;树中度为零的结点称为叶结点或终端结点。树中度不为零的结点称为分枝结点或非终端结点。除根结点外的分枝结点统称为内部结点。 2.树的深度——组成该树各结点的最大层次,如上图,其深度为4; 3.森林——指若干棵互不相交的树的集合,如上图,去掉根结点A,其原来的二棵子树T1、T2、T3的集合{T1,T2,T3}就为森林; 4.有序树——指树中同层结点从左到右有次序排列,它们之间的次序不能互换,这样的树称为有序树,否则称为无序树。 5.树的表示 树的表示方法有许多,常用的方法是用括号:先将根结点放入一对圆括号中,然后把它的子树由左至右的顺序放入括号中,而对子树也采用同样的方法处理;同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。如上图可写成如下形式: (A(B(E(K,L),F),C(G),D(H(M),I,J))) 5. 2 二叉树 1.二叉树的基本形态: 二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态: (1)空二叉树——(a); (2)只有一个根结点的二叉树——(b); (3)右子树为空的二叉树——(c); (4)左子树为空的二叉树——(d); (5)完全二叉树——(e) 注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形。 2.两个重要的概念: (1)完全二叉树——只有最下面的两层结点度小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树; (2)满二叉树——除了叶结点外每一个结点都有左右子女且叶结点都处在最底层的二叉树,。 如下图: 完全二叉树 1页

树与二叉树习题解析(答)

习题五树与二叉树 一、选择题 1、一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足。 A、所有的结点均无左孩子 B、所有的结点均无右孩子 C、只有一个叶子结点 D、是任意一棵二叉树 2、一棵完全二叉树上有1001个结点,其中叶子结点的个数是。 A、250 B、500 C、254 D、505 E、以上答案都不对 3、以下说法正确的是。 A、若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树后序遍历序列中的最后一个结点 B、若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树中序遍历序列中的最后一个结点 C、在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点 D、在二叉树中,具有一个子女的父结点,在中序遍历序列中,它没有后继子女结点 4、以下说法错误的是。 A、哈夫曼树是带权路径长度最短得数,路径上权值较大的结点离根较近 B、若一个二叉树的树叶是某子树中序遍历序列中的第一个结点,则它必是该子树后序 遍历序列中的第一个结点 C、已知二叉树的前序遍历和后序遍历并不能唯一地确定这棵树,因为不知道树的根结 点是哪一个 D、在前序遍历二叉树的序列中,任何结点其子树的所有结点都是直接跟在该结点之后 的 5、一棵有124个叶结点的完全二叉树,最多有个结点。

A、247 B、248 C、249 D、250 E、251 6、任何一棵二叉树的叶结点在前(先)序、中序和后序遍历序列中的相对次序。 A、不发生变化 B、发生变化 C、不能确定 7、设a、b为一棵二叉树上的两个结点。在中序遍历时,a在b前面的条件是。 A、a在b的右方 B、a在b的左方 C、a是b的祖先 D、a是b的子孙 8、设深度为k的二叉树上只有度为0和度为2的结点,则这类二叉树上所含的结点总数为。 A、不确定 B、2k C、2k-1 D、2k+1 9、设有13个值,用它们组成一棵哈夫曼树,则该哈夫曼树共有个结点。 A、13 B、12 C、26 D、25 10、下面几个符号串编码集合中,不是前缀编码的是。 A、{0,10,110,1111} B、{11,10,001,101,0001} C、{00,010,0110,1000} D、{b,c,aa,ac,aba,abb,abc} 11、欲实现任意二叉树的后序遍历的非递归算法而不使用栈结构,最佳的方案是二叉树采用存储结构。 A、三叉链表 B、广义表 C、二叉链表 D、顺序表 12、以下说法错误的是。 A、存在这样的二叉树,对它采用任何次序遍历其结点访问序列均相同 B、二叉树是树的特殊情形 C、由树转换成二叉树,其根结点的右子树总是空的 D、在二叉树只有一棵子树的情况下也要明确指出该子树是左子树还是右子树 13、树的基本遍历策略可分为先根遍历和后根遍历,二叉树的基本遍历策略可分为先序、中序和后序三种遍历。我们把由树转化得到的二叉树称该树对应的二叉树,则下面是正确的。 A、树的先根遍历序列与其对应的二叉树先序遍历序列相同

第6-10章--树和二叉树--答案

第6章树和二叉树 一、基础知识题 1.列出右图所示二叉树的叶结点、分支结点和每个结点的层次。 [解答]二叉树的叶结点有⑥、⑧、⑨。分支结点有①、 ②、③、④、⑤、⑦。结点①的层次为0;结点②、 ③的层次为1;结点④、⑤、⑥的层次为2;结点⑦、 ⑧的层次为3;结点⑨的层次为4。 2.使用(1)顺序表示和(2)二叉链表表示法,分别画出右图所示二叉树的存储表示。 [解答] (1)顺序表示 ①②③④⑤⑥⑦ ⑧⑨

(2)二叉链表表示 3.在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点? [解答] 结点个数为n时,高度最小的树的高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。 4.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。 [解答] 具有3个结点的树具有3个结点的二叉树 5.如果一棵树有n1个度为1的结点,有n2个度为2的结点,…,n m个度为m的结点,试问有多少个度为0的结点?试推导之。 [解答] 总结点数n=n0+n1+n2+…+n m 总分支数e=n-1= n0+n1+n2+…+n m-1 =m×n m+(m-1)×n m-1+…+2×n2+n1

则有 n 0=∑=+-m i i n i 2 1))1(( 6.试分别找出满足以下条件的所有二叉树: (1) 二叉树的前序序列与中序序列相同; (2) 二叉树的中序序列与后序序列相同; (3) 二叉树的前序序列与后序序列相同。 [解答] (1) 二叉树的前序序列与中序序列相同:空树或缺左子树的单支树; (2) 二叉树的中序序列与后序序列相同:空树或缺右子树的单支树; (3) 二叉树的前序序列与后序序列相同:空树或只有根结点的二叉树。 7.填空题 (1)对于一棵具有n 个结点的树,该树中所有结点的度数之和为 n-1 。 (2)假定一棵三叉树的结点个数为50,则它的最小高度为 4 ,最大高度为 49 。 (3)一棵高度为h 的四叉树中,最多含有 (4h+1-1)/3 结点。 (4)在一棵三叉树中,度为3的结点数有2个,度为2的结点数有1个,度为1的结点数为2个,那么度为0的结点数有 6 个。 (5)一棵高度为5的满二叉树中的结点数为 63 个,一棵高度为3的满四叉树中的结点数为 85 个。 (6)在一棵二叉树中,假定度为2的结点有5个,度为1的结点有6个,则叶子结点数有 6 个。 (7)对于一棵含有40个结点的理想平衡树,它的高度为 5 。 (8)若对一棵二叉树从0开始进行结点编号,并按此编号把它顺序存储到一堆数组a 中,即编号为0的结点存储到a[0]中,其余类推,则a[i]元素的左子女结点为2×i+1 ,右子女结点为 2×i+2 ,双亲结点(i ≥1)为??2/)1(-i 。 9.n 个结点可构造出多少种不同形态的二叉树?若有3个数据1,2,3,输入它们构 造出来的中序遍历结果都为1,2,3的不同二叉树有哪些? [解答] 有n n C 2/ (n+1)种。当n=3时,中序遍历都为1,2,3的不同二叉树有5种:

二叉树习题及答案

1.设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数? 1根据“二叉树的第i层至多有2^(i ?1)个结点;深度为k的二叉树至多有2^k ? 1个结点(根结点的深度为1)”这个性质: 因为2^9-1 < 699 < 2^10-1 ,所以这个完全二叉树的深度是10,前9层是一个满二叉树, 这样的话,前九层的结点就有2^9-1=511个;而第九层的结点数是2^(9-1)=256所以第十层的叶子结点数是699-511=188个; 现在来算第九层的叶子结点个数。 由于第十层的叶子结点是从第九层延伸的,所以应该去掉第九层中还有子树的结点。因为第十层有188个,所以应该去掉第九层中的188/2=94个; 所以,第九层的叶子结点个数是256-94=162,加上第十层有188个,最后结果是350个 2完全二叉树:若二叉树中最多只有最下面两层的结点的度可以小于2,并且最下面一层的结点(叶结点)都依次排列在该层最左边的位置上,这样的二叉树为完全二叉树。 比如图: 完全二叉树除叶结点层外的所有结点数(叶结点层以上所有结点数)为奇数,此题中,699是奇数,叶结点层以上的所有结点数为保证是奇数,则叶结点数必是偶数,这样我们可以立即选出答案为B! 如果完全二叉树的叶结点都排满了,则是满二叉树,易得满二叉树的叶结点数是其以上所有层结点数+1比如图: 此题的其实是一棵满二叉树,我们根据以上性质,699+1=700,700/2=350,即叶结点数为350,叶结点层以上所有结点数为350-1=349。 3完全二叉树中,只存在度为2的结点和度为0的结点,而二叉树的性质中有一条是:n0=n2+1;n0指度为0的结点,即叶子结点,n2指度为2的结点,所以2n2+1=699 n2=349;n0=350 2.在一棵二叉树上第5层的结点数最多是多少 一棵二叉树,如果每个结点都是是满的,那么会满足2^(k-1)1。 所以第5层至多有2^(5-1)=16个结点! 3.在深度为5的满二叉树中,叶子结点的个数为 答案是16 ~ 叶子结点就是没有后件的结点~ 说白了~ 就是二叉树的最后一层~ 深度为K的二叉树~ 最多有2^k-1个结点~ 最多有2^(k-1)个结点~ 所以此题~ 最多有2^5-1=31个结点~ 最多有2^(5-1)=16个叶子结点~ 4.某二叉树中度为2的结点有18个,则该二叉树中有几个叶子结点? 结点的度是指树中每个结点具有的子树个数或者说是后继结点数。 题中的度为2是说具有的2个子树的结点; 二叉树有个性质:二叉树上叶子结点数等于度为2的结点数加1。 5.在深度为7的满二叉树中,度为2的结点个数为多少, 就是第一层只有一个节点,他有两个子节点,第二层有两个节点,他们也都有两个子节点以此类推,所以到第6层,就有2的5次方个节点,他们都有两个子节点 最后第7层都没有子节点了。因为是深度为7的。 所以就是1+2+4+8+16+32了

习题6树和二叉树.docx

习题6树和二叉树 说明: 本文档中,凡红色字标出的题请提交纸质作业,只写题号和答案即可。 6.1单项选择题 1. 由于二叉树屮每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法_B_。 A. 正确 B.错误 2. 假定在一棵二叉树屮,双分支结点数为15,单分支结点数为30个,则叶子结点数为 B_个。 A. 15 B. 16 C. 17 D. 47 3. 按照二叉树的定义,具有3个结点的不同形状的二叉树有_C_种。 A. 3 B.4 C. 5 D. 6 4. 按照二叉树的定义,具有3个不同数据结点的不同的二叉树有_C_种。 A.5 B.6 C. 30 D. 32 5. 深度为5的二叉树至多有_C_个结点。 A. 16 B. 32 C. 31 D. 10 6. 设高度为h 的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点 数至少为 B 。 A. 2h B. 2h-l C. 2h+l D. h+l 7. 对一个满二叉树,m 个树叶,n 个结点,深度为h,则_A_。 A. n=h+m B. h+m=2n C. m=h-1 D. n=2 h -l 8. 任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序_A_。 A.不发生改变 B.发生改变 C.不能确定 D.以上都不对 9. 如杲某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉树的后 序为_C_。 A. uwvts B. vwuts C. wuvts D. wutsv 10. 二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法_A_。 A.正确 B.错误 11. 某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是_D_。 A. bdgcefha B. gdbecfha 12. 在一非空二叉树的中序遍历序列中, A.只有右子树上的所有结点 13. 如图6.1所示二叉树的中序遍历序列是_B_。 14. 一棵二叉树如图6.2所示,其中序遍历的序列为 B 。 A. abdgcefh B. dgbaechf C. gdbehfca D. abcdefgh C. bdgaechf D. gdbehfca 根结点的右边_A_。 B.只有右子树上的部分结点 C.只有左子树上的部分结点 D.只有左子树上的所有结点 A. abcdgef B. dfebagc C. dbaefcg D. defbagc 图6」

第6章树和二叉树自测题

第6章树和二叉树自测题 一、填空题 1.树是一种________结构。在树结构中,________结点没有直接前趋。(层次,根) 2.一棵树上的任何结点(不包括根本身)称为根的________。若B是A的子孙,则称A是B的________。(子孙结点,祖先) 3.二叉树有______二叉树、______的二叉树、只有______的二叉树、只有______的二叉树、同时有______的二叉树五种基本形态。(空、只有根结点、根和根的左子树、根和根的右子树、根和根的左右子树) 4.树在计算机内的表示方式有_______、_______、_________。(双亲表示法、孩子表示法、双亲孩子表示法) 5.对任何二叉树,若度为2的节点数为n 2,则叶子数n =______。(n =n 2 +1) 6. 高度为k(k>=1)的二叉树至多有______个结点。(2k-1) 7. 二叉树第i(i>=1)层上至多有______个结点。(2i-1) 8. 满二叉树上各层的结点数已达到了二叉树可以容纳的______。满二叉树也是______二叉树,但反之不然。(最大值,完全二叉树) 9.具有n个结点的完全二叉树的高度为______。(log 2 n) 10. 如果将一棵有n个结点的完全二叉树按层编号,则对任一编号为i(1<=i<=n)的结点X 有: (1)若i=1,则结点X是______;若i〉1,则X的双亲PARENT(X)的编号为______。(根 结点,[i/2]) (2) 若2i>n,则结点X无______且无______;否则,X的左孩子LCHILD(X)的编号为 ______。(左孩子,右孩子,2i) (3)若2i+1>n,则结点X无______;否则,X的右孩子RCHILD(X)的编号为______。(右 孩子,2i+1) 11. 二叉树通常有______存储结构和______存储结构两类存储结构。(顺序,链接) 12.具有n个结点的二叉链表中,一共有________个指针域,其中只有________个用来指向结点的左右孩子,其余的________个指针域为NULL。(2n,n-1,n+1) 13. 一棵二叉树由根、左子树和右子树三部分组成,因此对二叉树的遍历也可相应地分解成________、________、________三项“子任务”。(访问根结点、遍历左子树、遍历右子树) 14. 若以N、L、R分别表示二叉树的三项子任务,限定“先左后右”,这样可能的次序有:________、________、________三种,按这三种次序进行的遍历分别称为________、________、________。(NLR、LNR、LRN、先根(或前序)遍历、中根(或中序)遍历、后根(或后序)遍历) 15. 在二叉链表中,指针p所指结点为叶结点的条件是______。(结点的左右孩子域均为空指针) 16. 已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树有______个叶结点。(12) 17.设根结点的层数为1,具有n个结点的二叉树的最大高度是______。(n) 18. 已知二叉树前序序列为ABDEGCF,中序序列为DBGEACF,则后序序列是____。(DGEBFCA) 19. 若一个二叉树的叶结点是某子树的中序遍历序列中的最后一个结点,则它必是该子树的______序列中的最后一个结点。(先(前)序) 20. 先根次序遍历树(森林)等同于按______遍历对应的二叉树;后根次序遍历树(森林)等同

相关主题
文本预览
相关文档 最新文档