二叉树例子如上:
先创建一个队列 将根结点A入队(根结点不存在则直接结束)
A出队后 将A的左子和右子分别入队
下一个元素出队,并将其左子右子入队,以此类推
代码实现如下:
void BinaryTree::layerOrderTravelsal(TreeNode* node) //层序遍历
{
queue<TreeNode*> myQueue;
if (!node)
return; // 如果根结点不存在 则直接出队
myQueue.push(node);
while (!myQueue.empty())
{
auto temp = myQueue.front();
myQueue.pop();
cout << temp->data << " ";
free(temp);
if (node->LChild) myQueue.push(node->LChild);
if (node->RChild) myQueue.push(node->RChild);
}
}