이진 검색 트리를 구현했는데... segment 오류가 나네요...;;;

murien의 이미지

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct NodeTag{
char *Symbol;
struct NodeTag *LLink;
struct NodeTag *RLink;
}TreeNode;

TreeNode *Tree (TreeNode *A, char *S){

if(A==NULL){
			  	
                                A=(TreeNode *)malloc(sizeof(TreeNode));
			A->Symbol=(char *)malloc(strlen(S)+1);
			A->LLink=NULL;
        	A->RLink=NULL;
			A->Symbol=S;

	}else if(strcmp(S,A->Symbol)<0){
		A->LLink=Tree(A->LLink,S);
	}else{
		A->RLink=Tree(A->RLink,S);
	}
return A;
}

void Traverse(TreeNode *T){

if(T!=NULL){
Traverse(T->LLink);
printf("%s\n",T->Symbol);
Traverse(T->RLink);
}
}

main(){
TreeNode *A;
char c[10];
A=NULL;


printf("Input Your Symbol : ");
while(strcmp(c,"111111")!=0){
scanf("%s",c);
if(strcmp(c,"111111")!=0) A=Tree(A,c);
}

Traverse(A);
}

yui의 이미지

murien wrote:
#include<stdio.h>

if(A==NULL){
			  	
                                A=(TreeNode *)malloc(sizeof(TreeNode));
			A->Symbol=(char *)malloc(strlen(S)+1);
			A->LLink=NULL;
        	A->RLink=NULL;
			A->Symbol=S;

// 다른 부분은 아직 안읽어봤는데 일단 위의 문장이 이상합니다.
// strcpy류의 함수로 복사해주세요.

	}else if(strcmp(S,A->Symbol)<0){
		A->LLink=Tree(A->LLink,S);
	}else{
		A->RLink=Tree(A->RLink,S);
	}
return A;
murien의 이미지

앗 해결했슴다^^ ㄳ~~