给定一个二叉树,编写一个函数来检查给定的二叉树是否是完全二叉树。
完全二叉树是一棵二叉树,其中除了可能的最后一层外,每一层都被完全填满,并且所有节点都尽可能靠左。来源:维基百科
我的方法是使用队列进行 BFS 并计算节点数。运行一个循环,直到队列不为空,但一旦发现以下条件之一成立,就会中断:
- 节点不存在左节点
- 左节点存在但右节点不存在。
现在我们可以比较从上述方法获得的计数和树中节点的原始计数。如果两者相等,则完全二叉树,否则不相等。
请告诉我该方法是否正确。谢谢。
这个问题和这个问题一样。但我想在这里验证我的方法。
编辑: 该算法由下面的@Boris Strandjev验证。我觉得这是在网络中可用的一些算法中最容易实现的算法。如果您不同意我的主张,真诚地道歉。