二叉树按层次遍历,要求在不同的层次之间输出空行。
template<class Type> void Tree<Type>::level() const
{
queue<Node<Type>*> q;
Node<Type> *p = root;
if (p != 0) {
q.push(p);
q.push(0);
}
while (!q.empty()) {
p = q.front();
q.pop();
if (p != 0) {
cout <<p->data << " ";
if (p->left != 0)
q.push(p->left);
if (p->right != 0)
q.push(p->right);
} else {
if (!q.empty())
q.push(0);
cout << endl;
}
}
}