厳蔚敏データ構造練習問題6.47
2979 ワード
階層順(同じ階層で左から右)にツリーを巡回するアルゴリズムを作成する
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <malloc.h>
#include <queue>
using namespace std;
typedef struct tnode
{
int data;
struct tnode *lchild,*rchild;
}*bitree;
int creattree(bitree &bt)
{
char ch;
scanf("%c",&ch);
getchar();
if(ch=='#')bt=NULL;
else
{
bt=(tnode*)malloc(sizeof(tnode));
bt->data=ch;
printf(" %c :", ch);
creattree(bt->lchild);
printf(" %c :", ch);
creattree(bt->rchild);
}
return 1;
}
void visit(bitree p)
{
printf("%c ",p->data);
}
void levelserach(bitree bt)
{
queue<struct tnode*>que;
bitree p;
if(bt)que.push(bt);
while(!que.empty())
{
p=que.front();
que.pop();
visit(p);
if(p->lchild)que.push(p->lchild);
if(p->rchild)que.push(p->rchild);
}
}
int main()
{
bitree bt;
bt=(tnode*)malloc(sizeof(tnode));
printf(" :");
creattree(bt);
printf(" :
");
levelserach(bt);
return 0;
}