版权声明:转载请注明出处 https://blog.csdn.net/doubleguy/article/details/86099363
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void createBiTree(BiTree &t){//括号内的BiTree &t相当于BiTNode* &t
char c;
cin>>c;
if(c == '#')//当遇到#时,令根节点为NULL,结束掉该分支的递归
t = NULL;
else{
t = new BiTNode;
t->data = c;
createBiTree(t->lchild);
createBiTree(t->rchild);
}
}
void lawyerOrder(BiTree t){
queue<BiTNode*> q;
q.push(t);
while(!q.empty()){
BiTNode *p = q.front();
cout<<q.front()->data<<' ';
q.pop();
if(p->lchild!=NULL)
q.push(p->lchild);
if(p->rchild!=NULL)
q.push(p->rchild);
}
}
int main(){
BiTree t;
createBiTree(t);
cout<<"二叉树建立完成!"<<endl;
cout<<"层级遍历序列为:";
lawyerOrder(t);
return 0;
}
测试结果:
假设我们要建立一个如下图所示的二叉树,#代表空节点,按照前序遍历顺序二叉树表示为:ab##c##
运行结果如下: