#二叉树(C++)
# 1.广度优先
/*
* 节点
*/
struct Node
{
int data;//节点值
Node* left;//左节点
Node* right;//右节点
};
/*!
* \brief 广度优先搜索算法
* \param pTree : Node * 二叉树
* \returns void :
* \throws <exception class>
* \remarks
* \see
*/
void BreadthFirstSearch(Node* pTree)
{
/*
A
/ \
B C
/ \ / \
D E F G
广度优先:A B C D E F G
*/
/*
算法逻辑:
1.遍历根节点
2.遍历左子树
3.遍历右子树
借助队列先进先出的顺序,先将左子树入队,再对右子树入队
*/
if (pTree == nullptr)
return;
queue<Node*>queueNode;
queueNode.push(pTree);
Node* pNode;
while (!queueNode.empty())
{
pNode = queueNode.front;
queueNode.pop();
std::cout << pNode->data << std::endl;
if (pNode->left != nullptr)
queueNode.push(pNode->left);
if (pNode->right != nullptr)
queueNode.push(pNode->right);
}
}