判断完全二叉木---C++実現
//
bool isCBT(node* root) {
if (root) {
queueque;
que.push(root);
bool isLeaf = false;
while (que.size()) {
node* p = que.front();
que.pop();
// false
if (!p->lchild && p->rchild) {
return false;
}
//
if (p->lchild && !p->rchild) {
// isLeaf false
if (isLeaf) {
return false;
}
isLeaf = true;
que.push(p->lchild);
}
//
else if (!p->lchild && !p->rchild) {
isLeaf = true;
}
//
else {
que.push(p->lchild);
que.push(p->rchild);
}
}
return true;
}
return false;
}