二叉树习题
一、二叉树性质
Q1
设某种二叉树有特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有
m(m>0)
个叶子结点,那么该二叉树上的结点总数为( )
根据二叉树的性质,在任意的二叉树中,度为0的节点比度为2的节点多了1个
现在叶子节点为
m
个,即度为0的节点有m
个,那度为2的节点个数就为m-1
个而题目说该二叉树中只有度为2和度为0的节点 ,因此总的节点数就为:
m+m-1 = 2m-1
Q2
设根结点的深度为1,则一个拥有n个结点的二叉树的深度一定在( )区间内
最大深度: 即每次只有一个节点,次数二叉树的高度为n,为最高的高度
最小深度: 此树为完全二叉树, 如果是完全二叉树
根据二叉树性质,完全二叉树的高低为 h = log(n+1)向上取整
故答案为
[log(n + 1),n]
Q3
对任意一颗二叉树,设
N0、N1、N2
分别是度为0、1、2
的结点数,则下列式子中一定正确的是( )
节点总数N:
N = N0 + N1 + N2
度和边的关系:
N - 1 = 0 * N0 + 1 * N1 + 2 * N2
上面两个式子可以推出:
N0 + N1 + N2 - 1 = N1 + 2 * N2
可得:
N0 = N2 + 1
Q4
有n个元素的完全二叉树的深度是( )
完全二叉树的特性,高度h = log(n)向上取整 注意:底数是2
故答案为
logn+1
Q5
下列关于二叉树的叙述错误的是( )
A.二叉树指的是深度为 2 的树
B.一个 n 个结点的二叉树将拥有
n-1
条边C.一颗深度为 h 的满二叉树拥有
2^h-1
个结点(根结点深度为1)D.二叉树有二叉链和三叉链两种表示方式
A错误: 二叉树指最大孩子个数为2,即树的度为二的树。深度描述的为树的层数。
B正确: 对于任意的树都满足:边的条数比节点个数少1,因为每个节点都有双亲,但是根节点没有
C正确: 正确,参加二叉树性质
D正确: 二叉链一般指孩子表示法,三叉连指孩子双亲表示法,这两种方式是二叉树最常见的表示方式,虽然还有孩子兄弟表示法,该中表示方式本质也是二叉链
Q6
设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为( )个
设
Ni
表示度为i
的节点个数,则节点总数N = N0 + N1 + N2
节点个数于节点边的关系:
N
个节点的树有N-1
个边边与度的关系:
N - 1 = N1 + 2 * N2
故:
N0 + N1 + N2 - 1 = N1 + 2 * N2
因此,得:
N0 = N2 + 1
回到原题,
N0 = 3,N1 = 8
,可得N2 = 2
。因此答案是
3 + 8 + 2 = 13
。
二、遍历规律
Q7
已知某二叉树的前序遍历序列为5 7 4 9 6 2 1,中序遍历序列为4 7 5 6 9 1 2,则其后序遍历序列为( )
通过前序遍历找到子树的根,在中序遍历中找到根的位置,然后确定根左右子树的区间,即根的左侧为左子树中所有节点,根的右侧为右子树中所有节点。
故:根为: 5
5的左子树:4 7, 5的右子树: 6 9 1 2
5的左子树的根为: 7 ,5的右子树的根为:9
7的左子树: 4 7的右:空 ,9的左子树:6, 9的右子树:2
结构为:
![image-20230114214337925](https://i-blog.csdnimg.cn/blog_migrate/dc0254b07e12ae2b1638c39118ab7b17.png)
Q8
已知某二叉树的中序遍历序列为JGDHKBAELIMCF,后序遍历序列为JGKHDBLMIEFCA,则其前序遍历序列为( )
由后序遍历确定子树的根,后序遍历从后向前看,最后一个元素为根,和前序遍历刚好相反,从后向前看后序遍历,应该是根,右,左,根据中序遍历确定子树的左右区间
故:根为: A
A的左子树:JGDHKB , A的右子树:ELIMCF
A的左子树的根:B , A的右子树的根:C
B的左子树:JGDHK B的右子树:空, C的左子树:ELIM ,C的右子树:F
B的左子树的根:D , C的左子树根:E
D的左子树的根:G ,D的右子树的根:H ,E的右子树的根:I
结构为:
![image-20230114214831049](https://i-blog.csdnimg.cn/blog_migrate/457ad02992b896662f41cd29bf30aa2f.png)
Q9
已知某二叉树的前序遍历序列为ABDEC,中序遍历序列为BDEAC,则该二叉树( )
前序确定根,中序找到根确定根的左右子树,最后还原二叉树为:
所以该二叉树既不是满二叉树,也不是完全二叉树
![image-20230114215005986](https://i-blog.csdnimg.cn/blog_migrate/721f10f0680ffc844c8d6f27a16651f6.png)
Q10
二叉树的( )遍历相当于广度优先遍历,( )遍历相当于深度优先遍历
广度优先需要把下一步所有可能的位置全部遍历完,才会进行更深层次的遍历,层序遍历就是一种广度优先遍历。
深度优先是先遍历完一条完整的路径(从根到叶子的完整路径),才会向上层折返,再去遍历下一个路径,前序遍历就是一种深度优先遍历。
Q11
如果一颗二叉树的前序遍历的结果是ABCD,则满足条件的不同的二叉树有( )种
首先这棵二叉树的高度一定在3~4层之间:
三层:
A(B(C,D),())
、A((),B(C,D))
、A(B(C,()),D)
、A(B((),C),D)
、A(B,C(D,()))
、A(B,C((),D))
四层:
如果为四层,就是单边树,每一层只有一个节点,除过根节点,其他节点都有两种选择,在上层节点的左边还是右边,所以2^3共8种
总共为14种
Q12
一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( )
前序遍历:根 左 右
后序遍历:左 右 根
从二叉树 前序 和 后序遍历结果规则中可以看出,如果树中每个节点只有一个孩子时,遍历结果肯定是反的
故每个节点只有一个孩子,即只有一个叶子节点