给定一个二叉树,编写一个函数来检查给定的二叉树是否是完全二叉树。
完全二叉树是这样的二叉树:除了最后一层之外,每一层都被完全填满,并且所有节点都尽可能位于最左边。来源:维基百科 http://en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees
我的方法是使用队列进行 BFS 并计算节点数。运行一个
循环直到队列不为空,但一旦找到其中之一就中断
以下条件成立:
- 节点的左节点不存在
- 左节点存在,但右节点不存在。
现在我们可以比较从上述方法获得的计数和
树中节点的原始计数。如果两者相等则
完整的二叉树否则不是。
请告诉我这种方法是否正确。谢谢。
这个问题和这个问题是一样的this https://stackoverflow.com/questions/1442674/how-to-determine-whether-a-binary-tree-is-complete。但我想在这里验证一下我的方法。
Edit:算法经过@验证鲍里斯·斯特兰杰夫以下。我觉得这是网络中可用的一些算法中最容易实现的算法。如果您不同意我的主张,真诚地道歉。
你的算法应该可以解决问题。
使用 BFS 所做的事情完全等同于绘制树,然后用手指从上到下、从左到右追踪节点。第一次无法继续时,请停止用手指描画。如果您没有计算所有节点,则结构显然不符合预期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)