第四章-树与二叉树 ----习题

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   

解析:画图,有规律 2^{0} + 2^{1} + 2^{2} + 2^{3} + 2^{4} + 2^{5} + (2^{5} - 8) *2

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。

猜你喜欢

转载自blog.csdn.net/u011587070/article/details/82526731
今日推荐