文章
9
粉丝
37
获赞
91
访问
2.3k
#include<bits/stdc++.h>
using namespace std;
typedef struct node{
char data;
struct node *lchild,*rchild;
}Bnode,*BiTree;
/*借助队列来实现层次遍历建立二叉树,我们知道层次遍历是一层一层的遍历,
借助队列先进先出的特性,例如,ABCDE要建立二叉树,A进队列,建立树节点,
然后依次建立左孩子B,加入队列,建立C,加入队列;A左右孩子已建好,此时将A出队列。
然后队列不为空,接着是建立B的左右孩子DE,分别加入队列。
直至队列为空。可以手动模拟一下。
*/
void create(BiTree &T,string s){
int len=s.length();
int i=0;
queue<BiTree> q;
if(len<=0) T==NULL;
else{
T=(BiTree)malloc(sizeof(Bnode));
T->lchild=NULL;
T->rchild=NULL;
T->data=s[i++];
q.push(T);
while(!q.empty()&&i<len){
Bnode *r=q.front();//当前结点
if(i<len&&s[i]!='#'){//建立左孩子
Bnode *t=(BiTree)malloc(sizeof(Bnode));
t->lchild=NULL;
t->rchild=NULL;
t->data=s[i++];
r->lchild=t;
q.push(t);
...
登录后发布评论
暂无评论,来抢沙发