读书人

请教:给出二叉树的后序遍历和中序遍历

发布时间: 2012-02-07 17:45:36 作者: rapoo

请问:给出二叉树的后序遍历和中序遍历,求其先序遍历?
#include <stdio.h>
#include <string.h>
char *strcutstr (char *s,int begin,int len)
{
char result[strlen(s)+1];
char *point;
int i;
point = &s[begin-1];
for (i=0;i <len;i++)
{
result[i] = *point;
point++;
}
result[len] = '\0 ';
point = result;
//printf( "%s ",point);
return point;
}
int strfind (char *s,char f)
{
int i=1;
char *t;
t=s;
while ((*t)!= '\0 ')
{
if (*t==f)
return i;
t++;
i++;
}
return 0;
}
void Make (char *Z,char *H)
{
int i=0;
//printf( "!!!!%d\n ",strlen(H));
if (Z[0]== '\0 ' || H[0]== '\0 ')
return;
//printf( "> %c <\n ",H[strlen(H)-1]);
//printf( "*%s*\n ",H);
i=strfind(Z,H[strlen(H)-1]);
//printf( "{%d %d}\n ",i-1,strlen(H));
printf( "> %c <\n ",H[strlen(H)-1]);
//printf( "%c\n ",H[strlen(H)-1]);
//printf( "> %s <\n ",strcutstr(Z,1,i-1));
Make(strcutstr(Z,1,i-1),strcutstr(H,1,i-1));
Make(strcutstr(Z,i+1,strlen(Z)-i),strcutstr(Z,i,strlen(Z)-i-1));
}
void main ()
{
char zx[10],hx[10];
gets(zx);
gets(hx);
Make(zx,hx);
getch();
}


麻烦请帮忙看一下,哪里出现错误了?


[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void root( char *mid, char *lst )


{
char a, *p, *q;

if( !*mid )
return ;
p = lst + strlen(lst) - 1;
printf( "%c ", *p );

q = strchr( mid, *p );
*p = 0x00;
p = q - mid + lst;
a = *p;
*p = 0x00;
*q = 0x00;

root( mid, lst );
*p = a;
root( q + 1, p );
}


int main()
{
char mid[] = "BADC ";
char lst[] = "BDCA ";

root( mid, lst );
printf( "\n " );

return 0;
}

读书人网 >C语言

热点推荐