【初级数据结构】二叉树习题

二叉树习题

一、二叉树性质

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

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

Q9

已知某二叉树的前序遍历序列为ABDEC,中序遍历序列为BDEAC,则该二叉树( )

前序确定根,中序找到根确定根的左右子树,最后还原二叉树为:

所以该二叉树既不是满二叉树,也不是完全二叉树

image-20230114215005986

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

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

前序遍历:根 左 右

后序遍历:左 右 根

从二叉树 前序 和 后序遍历结果规则中可以看出,如果树中每个节点只有一个孩子时,遍历结果肯定是反的

故每个节点只有一个孩子,即只有一个叶子节点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(1)非递归定义 树(tree)是由n(n≥0)个结点组成的有限集合。n=0的树称为空树;n>0的树T: ① 有且仅有一个结点n0,它没有前驱结点,只有后继结点。n0称作树的根(root)结点。 ② 除结点外n0 , 其余的每一个结点都有且仅有一个直接前驱结点;有零个或多个直接后继结点。 (2)递归定义 一颗大树分成几个大的分枝,每个大分枝再分成几个小分枝,小分枝再分成更小的分枝,… ,每个分枝也都是一颗树,由此我们可以给出树的递归定义。 树(tree)是由n(n≥0)个结点组成的有限集合。n=0的树称为空树;n>0的树T: ① 有且仅有一个结点n0,它没有前驱结点,只有后继结点。n0称作树的根(root)结点。 ② 除根结点之外的其他结点分为m(m≥0)个互不相交的集合T0,T1,…,Tm-1,其中每个集合Ti(0≤i<m)本身又是一棵树,称为根的子树(subtree)。 2、掌握树的各种术语: (1) 父母、孩子与兄弟结点 (2) 度 (3) 结点层次、树的高度 (4) 边、路径 (5) 无序树、有序树 (6) 森林 3、二叉树的定义 二叉树(binary tree)是由n(n≥0)个结点组成的有限集合,此集合或者为空,或者由一个根结点加上两棵分别称为左、右子树的,互不相交的二叉树组成。 二叉树可以为空集,因此根可以有空的左子树或者右子树,亦或者左、右子树皆为空。 4、掌握二叉树的五个性质 5、二叉树的二叉链表存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值