题目答案
D
题目解析
前序遍历的顺序依次为“根结点-左子树-右子树”,中序遍历的顺序依次为“左子树-根结点-右子树”。所以当二叉树只有根结点或非叶子结点只有右子树时,前序遍历和中序遍历的顺序都退化成了:根、右子树,故二者得到的序列相同。要使中序遍历序列与前序遍历序列相同,每个非叶子结点都不能有左子树。
题目答案
Ab
题目解析
本题考查指针的应用。要注意 p1
,p2
,a
,b
都是指针,a=b
是指将b
指向的地址赋值给a
,既让a
指向b
所指向的地址,(*a)++
,是将a
指向的地址里的东西 +1。这个时候的a
指向c2
的地址,所以(*a)++
,会使得 c2=a+1=b。
题目答案
填空位置 ①:
offset = 4
填空位置 ②:
(offset + dayNum[i]) % 7
填空位置 ③:
dayNum[m]
填空位置 ④:
i
填空位置 ⑤:
(offset + i) % 7
题目解析
首先我们先看到较为简单的第三、四两空,这两空对应的过程显然就是输出日历了。for
循环内应该是对每一天输出一个日期,因此循环范围就应该是这个月的天数,也就是dayNum[m]。
什么时候应该输出换行符呢?要么就是所有日期输出完毕了(i==dayNum[m]
),要么就是输出了一个星期之后进行换行,所以这里对应的就是每个星期结束,也就是当i
为7的倍数时进行换行。下面再回过来看前两空。通过上面一个for
循环可以看出来这个offset
是用来控制月历开始的时候要输出多少的空位,再参照题目给出的第一个月的月历就可以知道offset
初值应该是 4,即第一空对应需要做的事情。但是这个offset
只是对于第一个月正确,因此需要再加上所有小于 11 月的月份的天数,计算offset
的方法即为(offset+dayNum[i])%7
。