#include <iostream>
#include <deque>
using namespace std;
//树结构
struct BTreeNode
{
int m_nValue;
BTreeNode *m_pLeft;
BTreeNode *m_Right;
};
//层序遍历二叉树,即广度优先。
void Print(BTreeNode *pNode)
{
if(!pNode)
{
return ;
}
deque<BTreeNode *> dequeTree;
dequeTree.push_back(pNode);
while(dequeTree.size())
{
BTreeNode *p = dequeTree.front();
dequeTree.pop_front();
cout << p->m_nValue <<' ';
if(p->m_pLeft)
{
dequeTree.push_back(p->m_pLeft);
}
if(p->m_Right)
{
dequeTree.push_back(p->m_Right);
}
}
}
//按照先序创建二叉树,0表示空
BTreeNode *CreateTree()
{
int ch;
cin>> ch;
if(ch == 0)
{
return NULL;
}
else
{
BTreeNode *root = new BTreeNode();
root->m_nValue = ch;
root->m_pLeft = CreateTree();
root->m_Right = CreateTree();
return root;
}
}
void main()
{
BTreeNode *root = NULL;
cout <<"创建树:";
root = CreateTree();
cout << "层序遍历:";
Print(root);
cout << endl;
}
创建树:1 2 4 0 0 5 0 0 3 6 0 0 7 0 0
层序遍历:1 2 3 4 5 6 7
请按任意键继续. . .