首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教:给出二叉树的后序遍历和中序遍历,求其先序遍历

2012-02-07 
请问:给出二叉树的后序遍历和中序遍历,求其先序遍历?#includestdio.h#includestring.hchar*strcutstr(

请问:给出二叉树的后序遍历和中序遍历,求其先序遍历?
#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;
}

热点排行