层次遍历的特点会依次输出:根–左--右。
思路:入队顶点,当队不空,出队输出,并依次入队左孩子,右孩子
template<class T>
void BinaryTree<T>::LevelOrder()
{
LinkQueue<BiTreeNode<T>*> Q; //队列Q初始化
if (root == NULL)
{
return;
}
Q.EnQueue(root);
BiTreeNode<T> *q;
while (!Q.Is_Empty())
{
Q.DeQueue(q);
cout << q->data << " ";
if (q->leftChild)
{
Q.EnQueue(q->leftChild);
}
if (q->rightChild)
{
Q.EnQueue(q->rightChild);
}
}
}