/*广度优先遍历二叉树实现*/
#include <iostream>
#include <deque>
using namespace std;
typedef struct BTN
{
int data;
BTN *pL;
BTN *pR;
}BinaryTreeNode;
deque<BinaryTreeNode> NodeDeque;
//广度优先遍历二叉树.
void GDBL(BinaryTreeNode *root)
{
if(root == NULL)
return;
NodeDeque.push_back(*root);
BinaryTreeNode *p = root;
while(NodeDeque.size() > 0)
{
cout << NodeDeque.front().data;
if(NodeDeque.front().pL != NULL)
NodeDeque.push_back(*NodeDeque.front().pL);
if(NodeDeque.front().pR != NULL)
NodeDeque.push_back(*NodeDeque.front().pR);
NodeDeque.pop_front();
}
}
int main()
{
BinaryTreeNode *pRoot = new(BinaryTreeNode);
pRoot->data = 8;
pTemp->pL = NULL;
pTemp->pR = NULL;
BinaryTreeNode *pTemp = new(BinaryTreeNode);
pTemp->data = 6;
pTemp->pL = NULL;
pTemp->pR = NULL;
pRoot->pL = pTemp;
pTemp = new(BinaryTreeNode);
pTemp->data = 10;
pTemp->pL = NULL;
pTemp->pR = NULL;
pRoot->pR = pTemp;
pTemp = new(BinaryTreeNode);
pTemp->data = 5;
pTemp->pL = NULL;
pTemp->pR = NULL;
pRoot->pL->pL = pTemp;
pTemp = new(BinaryTreeNode);
pTemp->data = 7;
pTemp->pL = NULL;
pTemp->pR = NULL;
pRoot->pL->pR = pTemp;
pTemp = new(BinaryTreeNode);
pTemp->data = 9;
pTemp->pL = NULL;
pTemp->pR = NULL;
pRoot->pR->pL = pTemp;
pTemp = new(BinaryTreeNode);
pTemp->data = 11;
pTemp->pL = NULL;
pTemp->pR = NULL;
pRoot->pR->pR = pTemp;
GDBL(pRoot);
return 0;
}