1.给定二叉树如图 A-1 所示。设 N 代表二叉树的根, L 代表根结点的左子树, R 代表根结点的右子树。若遍历后的结点序列是 3 , 1 , 7 , 5 , 6 , 2 , 4 ,则其遍历方式是 D
-
LRN
-
NRL
-
RLN
-
RNL
- 前序遍历:根结点 -> 左子树 -> 右子树
- 中序遍历:左子树 -> 根结点 -> 右子树
- 后序遍历:左子树 -> 右子树 -> 根结点
2.下列二叉排序树中,满足平衡二叉树定义的是 B
① ② ③ ④
-
①
-
②
-
③
解析:根据平衡二叉树的定义有,任意结点的左、右子树高度差的绝对值不超过 1 。而其余 3 个选项均可以找到不符合该条件的结点。在做题的过程中,如果答案不太明显,可以把每个非叶结点的平衡因子都写出来再进行判断
3.已知一棵完全二叉树的第 6 层(设根为第 1 层)有 8 个叶结点,则完全二叉树的结点个 数最多是111
解析:画图,有规律
4.将森林转换为对应的二叉树,若在二叉树结点中,结点m是结点n的双亲结点的双亲结点,则在原来的森林中,m和n可能具有的关系是____。 答:1和3
1.父子关系
2.m的双亲结点与n的双亲结点是兄弟关系
3.兄弟关系
解析:树转换为二叉树
(1)加线。在所有兄弟结点之间加一条连线。
(2)去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。
(3)层次调整。以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子)
森林转换为二叉树
(1)把每棵树转换为二叉树。
(2)第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连接起来。
二叉树转换为树
是树转换为二叉树的逆过程。
(1)加线。若某结点X的左孩子结点存在,则将这个左孩子的右孩子结点、右孩子的右孩子结点、右孩子的右孩子的右孩子结点…,都作为结点X的孩子。将结点X与这些右孩子结点用线连接起来。
(2)去线。删除原二叉树中所有结点与其右孩子结点的连线。
(3)层次调整。
二叉树转换为森林
假如一棵二叉树的根节点有右孩子,则这棵二叉树能够转换为森林,否则将转换为一棵树。
(1)从根节点开始,若右孩子存在,则把与右孩子结点的连线删除。再查看分离后的二叉树,若其根节点的右孩子存在,则连线删除…。直到所有这些根节点与右孩子的连线都删除为止。
(2)将每棵分离后的二叉树转换为树。
最终:
1) m 2)m 3)m 4)m
/ / \ \
/ \ / \
n n n n
爷爷 父子 叔侄 兄弟
5.下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是(D)。
A B C D
-
A
-
B
-
C
-
D
- 解析:
题中所给二叉树的后序序列为d,b,c,a。结点d无前驱和左子树,左链域空,无右子树,右链域指向其后继结点b;结点b无左子树,左链域指向其前驱结点d;结点c无左子树,左链域指向其前驱结点b,无右子树,右链域指向其后继结点a。故选D。
6.在图B-1所示的平衡二叉树中,插入关键字48后得到一棵新平衡二叉树。在新平衡二叉树中,关键字37所在结点的左、右子结点中保存的关键字分别是()。C
图B-1
-
13,48
-
24,48
-
24,53
-
24,90
- 解析:
插入48以后,该二叉树根结点的平衡因子由-1变为-2,在最小不平衡子树根结点的右子树(R)的左子树(L)中插入新结点引起的不平衡属于RL型平衡旋转,需要做两次旋转操作(先右旋后左旋)。
调整后,关键字37所在结点的左、右子结点中保存的关键字分别是24、53。
7.在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶结点个数是()。B
-
41
-
82
-
113
-
122
- 解析:设树中度为i(i=0,1,2,3,4)的结点数分别为Ni,树中结点总数为N,则树中各结点的度之和等于N-1,即N=1+N1+2N2+3N3+4N4=N0+N1+N2+N3+N4,根据题设中的数据,即可得到N0=82,即树T的叶结点的个数是82
8.对n(n大于等于2)个权值均不相同的字符构成哈夫曼树,关于该树的叙述中,正确的是()
-
树中一定没有度为1的结点
-
该树一定是一棵完全二叉树
-
树种任一非叶结点的权值一定不小于下一任一结点的权值
-
树中两个权值最小的结点一定是兄弟结点
- 解析:
A:在形成哈夫曼树过程中,发现都是两节点结合,形成一个根节点,所以没有度为1的节点
B:不能保证,多看几棵哈弗曼树就能发现
C:对的,记住是两个节点结合,形成一个新节点
D:第一步就是找到两个最小节点形成新节点
9.若一棵完全二叉树有768 个结点,则该二叉树中叶结点的个数是( )。C
10. 若一棵二叉树的前序遍历序列和后序遍历序列分别为1,2,3,4和4,3,2,1,则该二叉树的中序遍历序列不会是()。
-
257
-
258
-
384
-
385
- 解析:画图一下就OK,第9层是满的1-9层总共有511个节点,第10层有768 -511 = 257个叶节点,由257推出第9层有
- 256 / 2 = 128 =====> 128 +1 = 129 个非 叶节点, 所以第九层有256 -129 = 127个叶节点 所以 257 + 127 = 384
-
1,2,3,4
-
2,3,4,1
-
3,2,4,1
-
4,3,2,1
解析:
前序序列为NLR,后序序列为LRN,由于前序序列和后序序列刚好相反,故不可能存在一个结点同时存在左右孩子,即二叉树的高度为4。1为根结点,由于根结点只能有左孩子(或右孩子),因此,在中序序列中,1或在序列首或在序列尾,ABCD皆满足要求。仅考虑以1的孩子结点2为根结点的子树,它也只能有左孩子(或右孩子),因此,在中序序列中,2或在序列首或序列尾,ABD皆满足要求。
【另解】画出各选项与题干信息所对应的二叉树如下,故ABD均满足。
11.已知一棵有 2011 个结点的树,其叶结点个数为 116 ,该树对应的二叉树中无右孩子的结点个数是 。
-
115
-
116
-
1895
-
1896
- 解析:树转换为二叉树时,树中每一个分支结点的所有子结点中的最右子结点无右孩子,根结点转换后也没有右孩子,因此,对应的二叉树中无右孩子的结点个数 = 分支结点数 +1=2011 - 116+ 1=1896 。通常本题应采用特殊法解,设题意中的树是如下图所示的结构,则对应的二叉树中仅有前 115 个叶结点有右孩子,故无右孩子的结点个数 =2011 - 115=1896 。
12.对于下列关键字序列,不可能构成某二叉排序树中一条查找路径的序列是()。
-
95,22,91,24,94,71
-
92,20,91,34,88,35
-
21,89,77,29,36,38
-
12,25,71,68,33,34
链接:在二叉排序树中,左子树结点值小于根结点,右子树结点值大于根结点。在选项A中,当查找到91后再向24查找,说明这一条路径(左子树)之后查找的数都要比91小,而后面却查找到了94(解题过程中,建议配合画图),因此错误。
【画图法】各选项对应的查找过如下图,BCD对应的查找树都是二叉排序树,A对应的查找树不是二叉排序树,因为在91为根的左子树中出现了比91大点的结点94。