算法设计大题(线性表与树) — 计算机选择题
题目
对一棵二叉树采用二叉链表存储,现要求输出其「之字形」层序遍历序列:第1层自左至右,第2层自右至左,第3层自左至右,如此交替。某同学准备借助一个辅助队列完成整层结点的收集,再对需要反向输出的层借助另一个辅助结构调整输出顺序。关于实现该算法,下列说法正确的是:
A. 收集层结点用队列,反向输出层借助栈,整棵树只需一次自上而下的层序扫描,时间复杂度 O(n)
B. 收集层结点用队列,反向输出层只能再递归遍历该层结点一次,时间复杂度变为 O(n²)
C. 反向输出层必须改用双端队列逐个插队首,否则无法得到正确序列
D. 收集层结点必须改用栈,否则无法保证同层结点按从左到右的顺序被访问