判断一棵树是不是彻底二叉树的思路
1>若是树为空,则直接返回错
2>若是树不为空:层序遍历二叉树
2.1>若是一个结点左右孩子都不为空,则pop该节点,将其左右孩子入队列;
2.1>若是遇到一个结点,左孩子为空,右孩子不为空,则该树必定不是彻底二叉树;
2.2>若是遇到一个结点,左孩子不为空,右孩子为空;或者左右孩子都为空;则该节点以后的队列中的结点都为叶子节点;该树才是彻底二叉树,不然就不是彻底二叉树;spa
bool check(BiTree T) { if (T == NULL) return false; queue<BiTree> Q; Q.push(T); while (!Q.empty()) { BiTree p = Q.front(); Q.pop(); if (p->left && p->right) { Q.push(p->left); Q.push(p->right); } else if(p->right && p-left == NULL) return false; else { if(p->left && p-right == NULL) Q.push(p->left); while(!Q.empty()) { p = Q.front(); Q.pop(); if(p->left || p->right) return false; } } } return true; }