一、判断题
1、
答案:T
解析:
后序:左右根
中序:左根右
所以说,如果刚好一样的话,只能是二叉树的任何结点都没有右孩子。
2、
答案:F
3、
答案:F
解析:没有确定二叉树的类型
二叉树的类型
(1)满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。
(2)完全二叉树(满足下面两个条件)
第一种是
- 一棵二叉树只有倒数第二层上的结点的度数(每个结点有几个分支,度数即为几)可以小于2,其余每层上的结点的度数都等于2。
- 空缺在右边(只要不是左边就行,不一定必须在相对于根节点来说的左子树上)
第二种是
满二叉树
下图中左边是完全二叉树,右边不是完全二叉树
(3)平衡二叉树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
(4)二叉搜索树:它的定义与树的定义是类似的,也是一个递归的定义:
- 要么是一棵空树
- 如果不为空,那么其左子树节点的值都小于根节点的值;右子树节点的值都大于根节点的值
- 其左右子树也是二叉搜索树
4、
答案:F
解析:
前序:根左右
中序:左根右
(1)因为a和b都是叶子节点,所以并不影响他们访问的先后次序,叶子结点不管是在哪种遍历方法中,它们的相对位置是不变的。
(2)先序遍历、中序遍历、后序遍历三个其实是相对根来说的,叶子结点左右遍历的顺序是不变的。
树的三种遍历方式
(1)前序遍历:根左右
- 先序遍历的时候,先访问总根节点
- 之后,访问总根节点的左子树的根,然后左子树,之后右子树,右子树也可能是根,但是先序遍历,就应该先遍历根,所以又开始了根——左子树——右子树(根),依次类推
- 最后,访问总根节点的右子树的根,又开始了根——左子树——右子树(根),依次类推
(2)中序遍历:左右根
- 中序遍历的时候,先从总根节点的左子树开始遍历,左子树——根——右子树(可能是下一棵子树的根节点)这样,先访问右子树所在子树的左结点——根——右子树(可能是下一棵子树的根节点),依次类推。
- 当左半边访问完之后,再访问总根节点
- 然后以同样的顺序访问总根节点的右子树
(3)后序遍历:左右根
- 后序遍历的时候,先从总根节点的左子树开始遍历,左子树——右子树(可能是下一棵子树的根节点)这样,先访问右子树所在子树的左结点——右子树(可能是下一棵子树的根节点),依次类推。最后,再一个个回退访问“根节点”
- 然后以同样的顺序访问总根节点的右子树
- 当左和右两个半边都访问完之后,再访问总根节点
5、
答案:F
解析:
中序:左根右
前序:根左右
这么看确实正确,但正确的前提是都有右子树,对于只有根和左子树的图是不成立的。
6、
答案:T
解析:
前序:根左右
中序:左根右
一样的话,那么一定没有左孩子
7、
答案:T
解析:
先序:根左右
中序:左根右
1.找出根节点:A
2.可能的树的类型,本题目只有两种
3.这两种树的中序遍历都不是CAB,一个是BAC,一个是CBA
单选题
1、
答案:A
解析:1+k+k2+k3+k4+…+kh-1=1*(1-kn)/1-k
等比公式:Sn=a1(1-qn)/(1-q)
所以答案是A
2、
答案:D
解析:每层只有第一个节点往下分,然后加上根节点即可
例如
- 2层:1+k
- 3层:2+k+k
…
3、
答案:B
解析:
先序:根左右
中序:左根右
所以要先序与中序相同,只能没有左子树,只有右子树
4、
答案:B
解析:
所以说,如果不是按照先序排列的话,一个结点为左结点或者右结点的同时,还可能是根,这个时候,先看以左结点或者右结点为根的子树的左结点和右结点,依次类推。也就是说,遇到既是左结点或者右结点,还是根的时候,先放一下,看以它为根的子树的左右结点。
5、
答案:A
解析:
(1)树的度:
- 度:每一个结点所拥有的子树的个数
- 树的度:最大的度数就是树的度
(2)有好多种二叉树,所以不一定是2
(3)二叉堆满足二个特性:
https://blog.csdn.net/x_y_q_/article/details/51707444
- 父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
- 每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。
- 当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆
- 当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。
6、
答案:A
解析:
(1)由后序排列可得根节点是4,所以,左边有123,右边有567,根节点是4
(2)假设是按照标准的排序,就是没有是结点同时又是根的情况的时候
- 对于左子树来说
后序:1(左)3(右)2(根)
中序:1(左)2(根)3(右)刚好与中序排序相同,所以是正确的
- 对于右子树来说:
后序:6(左)5(右)7(根)
中序:6(左)7(根)5(右)但是与中序排序不同,说明,出现了某一个结点即使左/右结点,同时也是根节点的情况
(3)不管是不是有某一个结点即使左/右结点,同时也是根节点的情况,小的总根节点就是根节点,位置是不会变的,所以根据后序排列,可知右子树的根节点是7(一般首选后序排列求根节点,没有后序排列的话,就根据前序排列求根节点,不管是总根节点,还是左子树的根节点,还是右子树的根节点。)
(4)假设是
对于后序:左右根:6-5-7是正确的
对于中序:左根右:5是根,所以找5所在的子树的左子树,所示是6-5-7
但是不对,所以不是这样的排序顺序
(5)假设是
对于后序:左右根:左边的也是根,所以找下一个子树,6-5-7是正确的
对于中序:左根右:左边的也是根,所以找下一个子树,左边空,根是5,右边是6,所以是5-6-7,所以正确
(6)最终图形为
根据完全二叉树的特点,所以不是完全二叉树,所以A是错误的。
左小于根,右大于根,所以是二叉搜索树。
7、
答案:C
解析:对于任何一棵树,结点总数=总分支数目+1,叶子没有分支数
设有x个叶子结点,那么m+x=m*k+1,所以,x=m(k-1)+1
8、
答案:D
解析:对于任何一棵树,结点总数=总分支数目+1,叶子没有分支数
2+3+4+x=2*2+3*3+4*4+1
x=21
9、
答案:D
解析:
(1)由后序排列可得根节点是4,所以,左边有213,右边有657,根节点是4
(2)假设是按照标准的排序,就是没有是结点同时又是根的情况的时候
- 对于左子树来说
前序:2(根)1(左)3(右)
中序:1(左)2(根)3(右)刚好与中序排序相同,所以是正确的
- 对于右子树来说:
后序:6(根)5(左)7(右)
中序:5(左)6(根)7(右)刚好与中序排序相同,所以是正确的
(3)图为
满二叉树也是完全二叉树的一种,所以,这也是一颗完全二叉树。
10、
答案:C
解析:
要作图的,有两层的,有三层的,
两层的有:母节点是A,A的左子节点为B,A的右子节点为C
三层的有:
1、母节点是A,A的右子节点为B,B的右子节点为C
2、母节点是A,A的右子节点为B,B的左子节点为C
3、母节点是A,A的左子节点为B,B的右子节点为C
4、母节点是A,A的左子节点为B,B的左子节点为C
11、
答案:B
解析:叶结点的相对顺序是不会改变的
12、
答案:C
解析:
- 在二叉树的第 i 层上至多有2i-1个结点
- 深度为 k 的二叉树上至多含2k-1个结点(k≥1)
所以25-1=16
13、
答案:B
解析:先序:根左右,若某一个结点既是左结点/右结点,同时,也是根节点的话,先看以其为根节点的子树的根左右。
14、
答案:A
解析:对于任何一棵树,结点总数=总分支数目+1,叶子没有分支数
5+3+2+x=1*5+2*3+3*2+1
x=8
15、
答案:C
解析:
中序:左根右
后序:根左右
相反,所以一定没有左孩子
16、
答案:B
解析:
前序:根左右
后序:左右根
中序:左根右
- 一棵具有N个结点的二叉树的前序序列和后序序列正好相反 ,则该二叉树一定满足该二叉树只有左子树或只有右子树,即该二叉树一定是一条链(二叉树的高度为N,高度等于结点数)(高度:根节点为1,下面依次为2、3…)
- 前序序列和中序序列正好相反,任一结点无右孩子
- 中序序列和后序序列正好相反,任一结点无左孩子
17、
答案:A
解析:
中序:左根右,所以要想在前面,n就得在m的左方
18、
答案:B
19、
答案:B
解析:
最少结点数:
- 2层:3个
- 3层:1+2+2=5个
- 4层:1+2+2+2=7个
…
所以为B
20、
答案:A
解析:
- 度数:含有子树的个数
- 树的度数:最大的度数
- 二叉树也需要分好多种类型
- 并非所有二叉树的左右子树都可以任意交换的,要看二叉树自己的特性要求,像堆或者搜索二叉树是不允许交换左右子树的