Points
- 层序遍历就是一层一层的遍历,从上往下,从左往右
- 这里,本文使用队列进行层序遍历操作
Code
- 创建二叉树的过程用的是先序,以-1值代表结点为空
#include<iostream>
using namespace std;
typedef struct BiTNode {
int data;
struct BiTNode* lchild, * rchild;
}BiTNode,*BiTree;
void creatBiTree(BiTree& T);
typedef struct BiTQueue {
BiTree* base;
int front;
int rear;
}BiTQueue;
void LevelTraverse(BiTree T);
void EnQueue(BiTQueue& Q, BiTree t);
BiTree DeQueue(BiTQueue& Q);
int main()
{
BiTree T = new BiTNode;
creatBiTree(T);
LevelTraverse(T);
system("pause");
return 0;
}
void creatBiTree(BiTree& T)
{
int data;
cout << "Please input the value of Node: ";
cin >> data;
if (data == -1) {
T = nullptr;
return;
}
T = new BiTNode;
T->data = data;
creatBiTree(T->lchild);
creatBiTree(T->rchild);
}
void LevelTraverse(BiTree T)
{
BiTQueue Q;
Q.base = new BiTree[100];
Q.front = 0;
Q.rear = 0;
EnQueue(Q, T);
while (Q.base) {
T = DeQueue(Q);
cout << T->data << " ";
if (T->lchild)EnQueue(Q, T->lchild);
if (T->rchild)EnQueue(Q, T->rchild);
}
}
void EnQueue(BiTQueue& Q, BiTree t)
{
Q.base[Q.rear] = t;
++Q.rear;
}
BiTree DeQueue(BiTQueue& Q)
{
++Q.front;
return Q.base[Q.front - 1];
}
test