Algorithm 为什么先查看然后删除而不是轮询

Algorithm 为什么先查看然后删除而不是轮询,algorithm,queue,Algorithm,Queue,在多个实例中,我遇到了一些算法,其中第一个队列头被偷看,然后被移除。我想知道为什么不使用民意测验,是否有什么特别的原因。例如,下面的二叉树级顺序遍历算法 将根节点添加到队列中 将队列大小指定给一个变量,例如count。重复步骤3到7次计数,其中N是队列的大小 如果队列不是空的,请打印出队列 窥视头部节点 如果头部已离开子对象,请将其添加到队列中 如果头部有正确的子项,则将其添加到队列中 从队列中移除头 如果队列不是空的,请返回步骤2 您可以查看一个元素,测试它,并可能决定不删除它peek检索队列

在多个实例中,我遇到了一些算法,其中第一个队列头被偷看,然后被移除。我想知道为什么不使用民意测验,是否有什么特别的原因。例如,下面的二叉树级顺序遍历算法

  • 将根节点添加到队列中
  • 将队列大小指定给一个变量,例如count。重复步骤3到7次计数,其中N是队列的大小
  • 如果队列不是空的,请打印出队列
  • 窥视头部节点
  • 如果头部已离开子对象,请将其添加到队列中
  • 如果头部有正确的子项,则将其添加到队列中
  • 从队列中移除头
  • 如果队列不是空的,请返回步骤2

  • 您可以查看一个元素,测试它,并可能决定不删除它

    peek检索队列后面的元素(最后一个元素),而不删除它,因此查看该元素以确认它是否是您要修改的元素是一种很好的方法。
    您已经知道pop将删除该元素,而不给您元素的引用来检查它。所以这实际上取决于你真正想做什么

    有些容器只提供peek和remove,因为对于同时提供这两种功能的函数,很难或不可能提供强异常保证:

    peek:检索但不删除此队列的头,或者如果此队列为空,则返回null

    轮询:检索并删除此队列的头,如果此队列为空,则返回null

    删除: 检索并删除此队列的头。

    您所说的“轮询”是什么意思?