Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

搞不懂为什么WA了,反正自己测试正确,大家帮忙看看

Posted by denganliang at 2011-03-23 14:24:10 on Problem 2255
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct node {
	char ch;
	struct node * left;
	struct node * right;
	};
int find(char in[40],char ch){
	int i;
	for(i=0;i<strlen(in);i++)
	   if(in[i]==ch)
	      return 1;
	      
	 return 0;
	}
struct node * recovery(char *preorder,char *inorder,int n,struct node * root){
     int i,j,mid;
     char pre[40],in[40];
     memset(pre,'\0',40);
     memset(pre,'\0',40);
     if(strlen(preorder)==0) return NULL;
     root->ch=preorder[0];
     root->left=(struct node *)malloc(sizeof(struct node));
     root->right=(struct node *)malloc(sizeof(struct node));
     for(i=0;i<strlen(inorder);i++)
        if(preorder[0]==inorder[i])
            break;
     for(j=0;j<i;j++)
       in[j]=inorder[j];
     j=0;
     mid=i;
     if(strlen(inorder)==0)  root->left=NULL;
     else{
     for(i=1;i<strlen(preorder);i++)
     if(find(in,preorder[i])==1) pre[j++]=preorder[i];
     
     root->left=recovery(pre,in,n,root->left);
     }
     memset(pre,'\0',40);
     memset(pre,'\0',40);
     j=0;
     for(i=mid+1;i<strlen(inorder);i++)
       in[j++]=inorder[i];
     j=0;     
     if(strlen(inorder)==0)  root->right=NULL;
     else{
     for(i=1;i<strlen(preorder);i++)
     if(find(in,preorder[i])==1) pre[j++]=preorder[i];
     root->right=recovery(pre,in,n,root->right);
     }
     return root;
	}
 void   search(struct node * root){
	    if(root==NULL) return;
	    else {
	    search(root->left);
	    search(root->right);
	    printf("%c",root->ch);
	    return ;
	    } 
	 }
int  main()
{
	struct node  root;
	char preorder[40],inorder[40];
	while(scanf("%s%s",preorder,inorder)!=EOF){
	    recovery(preorder,inorder,0,&root);
	    search(&root);
	    printf("\n");
	}
   return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator