텍스트 문서를 이진 트리로 받아야 하는데요 fopen, fscanf를 사용 하면되는데
(A,(B,_,_),(C,_,_)) 이문서를 받으면
A / | B C
(A,(B,(D,_,_),(E,_,_)),(C,(F,_,_),(G,_,_)))
A B C D E F G
이렇게 트리가 생성하려고 하는데 어떻게 받아야 좋을까요?
void f(Node* n, char* inp) { ... n->data = *(inp + 1); ... // left node if ( '_' != *(inp + 4) ) { Node left = (Node*) malloc(sizeof(Node)); n->left = left; f(n->left, inp + 3); } ... // right node ... }
대강은 이런 식으로요? 함수를 어떤 식으로 만들지 이미 계획하셨다면... 죄송! -_-a
제가 c를 잘 못해서요 ㅠ 좀더 자세한코드랑 성명가능하신가요 ㅠ
newyorker님의 리플을 해석해 드리면...
(A,(B,_,_),(C,_,_)) ^ inp 여기서부터 읽기 시작 (A,(B,_,_),(C,_,_)) ^ inp+1 여기가 데이타 자리 (A,(B,_,_),(C,_,_)) ^ inp+3 여기가 왼쪽 하위 노드 자리 (inp+4 라고 쓰신 건 오류겠네요) 그런데 이 시점에서 보면 (B,...) 이건 또 하위노드를 가질 수 있는 중첩된 형태니까 여기를 시작으로 해서 다시 재귀호출 ...
뭐 이런 얘기입니다.
좋은 하루 되세요!
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
재귀로 하는게 간단하겠죠?
void f(Node* n, char* inp)
{
...
n->data = *(inp + 1);
...
// left node
if ( '_' != *(inp + 4) )
{
Node left = (Node*) malloc(sizeof(Node));
n->left = left;
f(n->left, inp + 3);
}
...
// right node
...
}
대강은 이런 식으로요? 함수를 어떤 식으로 만들지 이미 계획하셨다면... 죄송! -_-a
감사합니다 ㅋㅋ
제가 c를 잘 못해서요 ㅠ
좀더 자세한코드랑 성명가능하신가요 ㅠ
newyorker님의 리플을 해석해 드리면...
newyorker님의 리플을 해석해 드리면...
뭐 이런 얘기입니다.
좋은 하루 되세요!
댓글 달기