参考层序遍历的算法,利用队列作为储存结构,将二叉树从上到下,从左到右遍历,对于完全二叉树来说,一旦队列中读到空指针,则必定已将二叉树遍历完全了,否则若空指针后还有为访问的元素,则不是完全二叉树。
思路:
遍历二叉树,直到结尾(nullptr)
→ 当前节点不存在,空树或者叶子节点,返回真【出口A】
→当前节点存在,入队
→→队列非空,取队首元素
→→→队首是叶子 && 存在左右儿子 || 队首存在右儿子但是不存在左儿子,返回false【出口B】
→→→队首有左儿子,左儿子入队
→→→队首有右儿子,右儿子入队
→→→队首有左儿子没有儿子,是叶子节点;队首没有有左儿子没有右儿子,叶子节点
struct node{