bool isCompBinTree() { QueueList<BinTree*> mQ; BinTree* root = this; mQ.enQueue(root); bool flag = false; while (!mQ.isEmpty()) //breadth-first traversal,while the queue is not empty,travel the queue's head node; { root = mQ.deQueue(); if (!flag && !(root -> ls && root -> rs)) { if (!root -> ls && root -> rs) { return false; } flag = true; } if (flag && (root -> ls || root -> rs)) { return false; } if (root -> ls) { mQ.enQueue(root -> ls); } if (root -> rs) { mQ.enQueue(root -> rs); } } }
void bfs() { QueueList<Node*> mQ; mQ.enQueue(root); Node* r; while (!mQ.isEmpty()) //breadth-first traversal,while the queue is not empty,travel the queue's head node; { r = mQ.deQueue(); cout << r->data << " "; for (Node* p = r -> child; p; p = p -> bro) { mQ.enQueue(p); } } cout << endl; }