1 #include <iostream>
2 #include <deque>
3 using namespace std;
4
5 //树结构
6 struct BTreeNode
7 {
8 int m_nValue;
9 BTreeNode *m_pLeft;
10 BTreeNode *m_Right;
11 };
12
13 //层序遍历二叉树,即广度优先。
14 void Print(BTreeNode *pNode)
15 {
16 if(!pNode)
17 {
18 return ;
19 }
20
21 deque<BTreeNode *> dequeTree;
22 dequeTree.push_back(pNode);
23
24 while(dequeTree.size())
25 {
26 BTreeNode *p = dequeTree.front();
27 dequeTree.pop_front();
28
29 cout << p->m_nValue <<' ';
30
31 if(p->m_pLeft)
32 {
33 dequeTree.push_back(p->m_pLeft);
34 }
35 if(p->m_Right)
36 {
37 dequeTree.push_back(p->m_Right);
38 }
39 }
40 }
41
42 //按照先序创建二叉树,0表示空
43 BTreeNode *CreateTree()
44 {
45 int ch;
46 cin>> ch;
47 if(ch == 0)
48 {
49 return NULL;
50 }
51 else
52 {
53 BTreeNode *root = new BTreeNode();
54 root->m_nValue = ch;
55 root->m_pLeft = CreateTree();
56 root->m_Right = CreateTree();
57 return root;
58 }
59 }
60
61 void main()
62 {
63 BTreeNode *root = NULL;
64 cout <<"创建树:";
65 root = CreateTree();
66 cout << "层序遍历:";
67 Print(root);
68 cout << endl;
69 }