二叉树的广度优先便利遵循从上之下,从左至右的原则.实现广度优先便利,利用了队列(LinkQueue<BinNode<T>*, capacity> *queueHelper;)
的先进先出的性质.先将节点入队列,之后取出,访问.访问完后,将其左右子节点入队列.依次循环即可.
代码如下:
template <class T, unsigned int capacity>
bool BinSearchTree<T, capacity>::scopeOrder()
{
bool result = false;
if (isEmpty())
{
result = false;
}
else
{
queueHelper = new LinkQueue<BinNode<T>*, capacity>();
queueHelper->enQueue(root);
while (!(queueHelper->isEmpty()))
{
BinNode<T>* temp = NULL;
queueHelper->deQueue(temp);
cout << "ScopeOrder: The value is :" << temp->data << endl;
if (NULL != temp->left)
{
queueHelper->enQueue(temp->left);
}
if (NULL != temp->right)
{
queueHelper->enQueue(temp->right);
}
}
if (NULL != queueHelper)
{
delete queueHelper;
queueHelper = NULL;
}
result = true;
}
return result;
}