您的位置:首页 > 其它

二叉树递归建立--深搜+宽搜遍历

2012-12-13 15:31 288 查看
/*输入文件自己建立*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define max 100
int x;
char ans[max];
typedef struct Tree
{
char val;
struct Tree* pl;
struct Tree* pr;
}*T;
T createtree( T p )
{
char ch;
scanf( "%c", &ch );
if( ch == '#' )
p = NULL;
else
{
p = (T)malloc( sizeof(struct Tree) );
p->pl = createtree( p );
p->val = ch;
p->pr = createtree( p );
}
return p;
}
void view( T p )
{
if( p != NULL )
{
printf( "%c", p->val );
view( p->pl );
view( p->pr );
}
else
return ;
}
void bfs( T root )
{
T q[max];
x = 0;
T u;
int front, rear;
rear = front = 0;
q[front++] = root;
while( front > rear )
{
u = q[rear++];
ans[x++] = u->val;
if( u->pl != NULL ) q[front++] = u->pl;
if( u->pr != NULL ) q[front++] = u->pr;
}
}
int main()
{
int i;
freopen( "in", "r", stdin );
T root = NULL;
root = createtree( root );
printf( "文件输入:  12##3## ");
printf( "\n\ndfs:\n" );
view( root );
printf( "\n\nbfs:\n" );
bfs( root );
for( i = 0; i < x; i++ )
printf( "%c", ans[i] );
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: