好多题都用得上,有机会补张内部队列的图吧
//! 层序遍历,很重要,精髓在于对于队列的应用
void BinarySearchTreesZH::levelorderTraversal(Node *node)
{
queue<Node *> list; //创建结构体指针队列,数据类型Node*,但是层序遍历不用指针也可以
if (node == nullptr)
{
return;
}
else
{
list.push(node); //把根节点push进去
}
while (list.size() != 0) //只要队列不为空就一直出队进队
{
cout << list.front()->element << " ";
//这里就是把队首的元素的左右子节点进队,然后弹出队首元素,就可以把二叉树中所有节点一层一层的按次序进队和出队
//还是画图比较好理解
if (list.front()->left != nullptr)
{
list.push(list.front()->left);
}
if (list.front()->right != nullptr)
{
list.push(list.front()->right);
}
list.pop();
}
}