给定的二叉树是否完整

时间:2013-08-10 07:56:03

标签: algorithm data-structures

给定二叉树,编写一个函数来检查给定的二进制树是否是完整的二进制树。

完整的二叉树是一个二叉树,其中除了可能是最后一个级别之外,每个级别都被完全填充,并且所有节点都尽可能地离开。来源:wikipedia

  

我的方法是使用队列进行BFS并计算节点数。跑一个   循环直到队列不为空,但一旦找到其中一个就中断   以下条件保持良好:

     
      
  1. 节点不存在左节点
  2.   
  3. 左节点存在但右节点不存在。
  4.         

    现在我们可以比较上述方法得到的数量   树中节点的原始计数。如果两者都相等   完整的二叉树不是。

请告诉我方法是否正确。感谢。

这个问题与this的问题相同。但我想在这里验证我的方法。

修改 该算法由@ Boris Strandjev 验证。我觉得这是实现网络中一些算法的最简单的算法。如果你不同意我的断言,真诚的道歉。

1 个答案:

答案 0 :(得分:4)

您的算法应该可以解决问题。

您使用BFS做的事情完全等同于绘制树,然后用手指从上到下和左右追踪节点。第一次无法继续时,请用手指停止跟踪。如果你没有计算所有节点,那么结构显然不是那么预期。