首页 > 试题广场 >

以下是一个tree的遍历算法,queue是FIFO队列,请参

[单选题]
以下是一个tree的遍历算法,queue是FIFO队列,请参考下面的tree,正确的输出是

queue.push(tree.root)
while(true){
   node=queue.pop( );
   output(node.value);//输出节点对应数字
   if(null= =node)
      break;
   for(child_node in node.children){
      queue.push(child_node);
   }
}
  • 1234567
  • 1245367
  • 1376254
  • 1327654
推荐
答案:A
这是二叉树的层次遍历。(输出结果跟加入队列的顺序相同)
while的第一次循环首先输出root节点,为1
在while的for循环里把2,3加入队列中
while第二次循环,输出2,在while的for循环里把2的两个子节点4,5加入队列
while第三次循环,输出3,在while的for循环里 把2的两个子节点6,7加入队列
再以后的while循环中,依次输出队列中的元素,这些元素都是叶子节点,for循环不再起作用
总的输出结果是1234567
编辑于 2015-02-10 10:55:40 回复(1)
第七行的for循环是什么鬼
发表于 2018-05-15 18:38:09 回复(3)
看到先进先出,就要想到层级遍历法
发表于 2015-08-19 08:57:54 回复(0)
代码第8行,当左孩子先进队时,答案是A 。当右孩子先进队时,则答案是D。此题未明确说明。所以默认一般做法,左孩子先进队。
发表于 2017-07-21 10:03:55 回复(0)
相当于图的bfs:bfs采用队列,dfs采用栈。
发表于 2019-01-08 08:13:46 回复(0)
一般用队列queue辅助层序遍历,用stack辅助前、中、后序遍历。
发表于 2018-10-10 15:30:52 回复(0)
pop()不是弹出最后一个吗?
发表于 2021-05-18 11:15:19 回复(0)
添加到队列中选A,添加到栈中选B
发表于 2018-08-30 15:05:46 回复(1)