디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

형들 이진트리 반복문을 통한 순회 코드인데요....

김성엽(203.253) 2012.01.09 20:43:58
조회 137 추천 0 댓글 6

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

typedef struct Node
{
 char data;
 struct Node *LeftChild;
 struct Node *RightChild;
 struct Node *next;
}Node;

Node *RootNode;
Node *topp;

int currentNodeCount = 0;

void push(Node *node)
{
 if(currentNodeCount == 0)
 {
  topp = (Node *)malloc(sizeof(Node));
  topp = node;
  topp->next = NULL;
  currentNodeCount++;
 }
 else
 {
  node->next = topp;
  topp = node;
  currentNodeCount++;
 }
}

Node *pop()
{
 Node *temp;
 if(currentNodeCount != 0)
 {
  temp = topp;
  printf("%c ", topp->data);
  topp = topp->next;
  currentNodeCount--;
  temp->next = NULL;
  return temp;
 }
}


void insertLeftChild(Node *New, Node *Parent)
{
 Parent->LeftChild = New;
 New->LeftChild = NULL;
 New->RightChild = NULL;
}

void insertRightChild(Node *New, Node *Parent)
{
 Parent->RightChild = New;
 New->LeftChild = NULL;
 New->RightChild = NULL;
}

Node* GetLeftChild(Node *Parent)
{
  if(Parent->LeftChild != NULL)
  {
   return Parent->LeftChild;
  }
  else
  {
   return NULL;
  }
}

Node* GetRightChild(Node *Parent)
{
 if(Parent->RightChild != NULL)
 {
  return Parent->RightChild;
 }
 else
 {
  return NULL;
 }
}

void deleteNode(Node *Parent)
{
 if(Parent != NULL)
 {
  deleteNode(Parent->LeftChild);
  deleteNode(Parent->RightChild);
  free(Parent);
 }
}

void deleteTree()
{
 deleteNode(RootNode);
}

void posttravel(Node *parent)
{
 static int count = 0;
 if(count == 0)
 {
  count++;
  posttravel(RootNode);
 }
 else
 {
  if(parent != NULL)
  {
  printf("%c ", parent->data);
  posttravel(parent->LeftChild);
  posttravel(parent->RightChild);
  }
 }
}

void midtravel(Node *parent)
{
 static int count = 0;
 if(count == 0)
 {
  count++;
  midtravel(RootNode);
 }
 else
 {
  if(parent != NULL)
  {
   midtravel(parent->LeftChild);
   printf("%c ", parent->data);
   midtravel(parent->RightChild);
  }
 }
}

void finaltravel(Node *parent)
{
 static int count = 0;
 if(count == 0)
 {
  count++;
  finaltravel(RootNode);
 }
 else
 {
  if(parent != NULL)
  {
   finaltravel(parent->LeftChild);
   finaltravel(parent->RightChild);
   printf("%c ", parent->data);
  }
 }
}
void main()
{
 Node *B, *C, *D, *E, *F, *G;
 Node *parent;
 Node *LeftChild;
 Node *RightChild;
 Node *Now;

 topp = (Node *)malloc(sizeof(Node));
 topp->next = NULL;
 RootNode = (Node *)malloc(sizeof(Node));
 RootNode->data = 'A';
 RootNode->LeftChild = NULL;
 RootNode->RightChild = NULL;
 

 B = (Node *)malloc(sizeof(Node));
 C = (Node *)malloc(sizeof(Node));
 D = (Node *)malloc(sizeof(Node));
 E = (Node *)malloc(sizeof(Node));
 F = (Node *)malloc(sizeof(Node));
 G = (Node *)malloc(sizeof(Node));
 B->data = 'B';
 C->data = 'C';
 D->data = 'D';
 E->data = 'E';
 F->data = 'F';
 G->data = 'G';
 
 insertLeftChild(B, RootNode);
 insertRightChild(C, RootNode);
 insertLeftChild(D, B);
 insertRightChild(E, B);
 insertLeftChild(F, C);
 insertRightChild(G, C);

 posttravel(RootNode);
 printf("\n");
 midtravel(RootNode);
 printf("\n");
 finaltravel(RootNode);
 printf("\n");

 push(RootNode);
 parent = RootNode;
 //여기부터
 while(1)
 {
  if(currentNodeCount == 0)
   break;
  else
  {
   Now = pop();
   
   if(RootNode->LeftChild != NULL)
    LeftChild = GetLeftChild(RootNode);
   if(RootNode->RightChild != NULL)
    RightChild = GetRightChild(RootNode);
   if(LeftChild != NULL)
   {
    push(RightChild);
   }
   if(RightChild != NULL)
   {
    push(LeftChild);
   }
  }
  free(Now);
 }
}
 
아마도 //여기부터 라고 쓴 부분에 잘못된 게 있는 것 같은데.......
재귀호출을 통한 순회는 잘 되거든요. 에휴 어디가 문젠지... 구원좀 부탁할게요 ㅠㅠ

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이성 보는 눈 없어서 걱정되는 스타는? 운영자 25/11/10 - -
AD 겨울가전 SALE! 쿨한 겨울 HOT세일 운영자 25/11/12 - -
298140 개쉛기가 존나 말렸는데 기어코 고시원에 들어가서 생활중인데.. [5] 쿄스케갤로그로 이동합니다. 12.01.11 125 0
298139 내가아는 어떤형은 프로그래밍 해서 3주동안 500 벌던데;; [5] ㅇㅇ(175.211) 12.01.11 204 0
298138 여기 도시락 싸다니는 프게이들 있어? [7] □ㅁ갤로그로 이동합니다. 12.01.11 101 0
298137 실력보다는 마인드 인거 같다 [2] □ㅁ갤로그로 이동합니다. 12.01.11 91 0
298136 한국 프로그램의 현실 이거.. 사실이냐?... [5] ㅇㅇ(175.211) 12.01.11 208 0
298134 컴돌이 여러분은 경영학 복수전공 함? [3] 최선생갤로그로 이동합니다. 12.01.11 122 0
298133 개잡대 컴공 nhn 취직 [5] ㅇㅇ(175.211) 12.01.11 397 0
298132 여자가 자기를 좋아하는지 진짜 아는방법... [3] 군대지원(222.101) 12.01.11 190 0
298131 곽팀장 잘왔따!!!!!!!!!!!!!!!!!!!!!!!!!!!! 캐곽팀장닭(115.92) 12.01.11 56 0
298128 여자가 자기를 좋아하는지 안하는지 확인법 □ㅁ갤로그로 이동합니다. 12.01.11 68 0
298127 헐 타과 수업 들으면 향수냄새 진동하나요? 군대지원(222.101) 12.01.11 55 0
298126 Linux 우분투로 깔았는데 괜찮은 or 필수 소프트웨어 추천좀 해주세요 [4] 개허접(128.208) 12.01.11 167 1
298124 Mysql 계정 권한주는데 안되요 ㅠㅠ [2] 에휴(203.171) 12.01.11 55 0
298123 근데 내 오른쪽 눈만 시력이 안좋아진게 [2] elwlwlwk갤로그로 이동합니다. 12.01.11 134 0
298121 해피투게더 재방보는데 [1] ㅋㄱ(183.96) 12.01.11 68 0
298120 아오 이제 자야겠다~~ 오늘 너무 버닝했네 거칠게갤로그로 이동합니다. 12.01.11 67 0
298119 난 아직도 여자들의 내숭과 거절을 잘 구분 못하겠어 -_- [1] 거칠게갤로그로 이동합니다. 12.01.11 147 0
298118 진짜 여자들의 위장술은 조심해야 한다 [1] 거칠게갤로그로 이동합니다. 12.01.11 206 0
298115 아무리 날고 겨도 등장 임팩트는 SES가 최고지 [5] 야요이갤로그로 이동합니다. 12.01.11 94 0
298114 걸그룹 중 베스트 오브 베스트를 뽑아보자!! [7] 거칠게갤로그로 이동합니다. 12.01.11 100 0
298113 걸그룹의 최고봉을 결정하자!! [10] 거칠게갤로그로 이동합니다. 12.01.11 121 0
298112 내가 아는 걸그룹 목록 [24] 거칠게갤로그로 이동합니다. 12.01.11 157 0
298111 진짜, 좋아요.~~Good.// [1] 학교가자갤로그로 이동합니다. 12.01.11 34 0
298110 같은 과로 얘도 갠찬치안스믑니까/ [5] ㅋㄱ(183.96) 12.01.11 168 0
298108 진심은 통한다는 말 따윈 이제 믿지않는다. 진심(211.221) 12.01.11 72 0
298106 내 공부 로드맵인데 좀 봐주라 [4] 도와주십시오(59.26) 12.01.11 204 0
298105 잠이 안온다. [1] ssonacy갤로그로 이동합니다. 12.01.11 62 0
298103 오픈지엘 조명쏘는데염.. ㅋㄱ(183.96) 12.01.11 57 0
298102 기초 기초 하는데 기초가 뭐임? [11] 뀨잉뀨잉(211.221) 12.01.11 221 1
298098 RCE 어떨까 [4] lucy_han갤로그로 이동합니다. 12.01.11 52 0
298097 [IT취업고민 끝~ 한국산업단지,중앙일보hta 전원채용확정교육] [5] 채용담당(219.255) 12.01.11 135 0
298095 체감 연봉 5천.. [13] K(125.186) 12.01.11 234 0
298094 스크린샷 깨짐현상에 대해 질문드려요 [1] ㅜㅜ(203.250) 12.01.10 52 0
298093 구조체 클래스??? [14] ㅋㄱ(183.96) 12.01.10 113 0
298092 형들 나 모든 확장자가 실행이 안됨... [3] 유동닉(183.108) 12.01.10 53 0
298090 디시 검색기능 좀 병신같이 바뀌지 않았음? [4] ㅇㅇㅇ(121.144) 12.01.10 177 0
298089 존내 멋진 공뭔들의 프로그램 배포방식.... [3] ㅅㄱㅅㄱㅅㄱ갤로그로 이동합니다. 12.01.10 127 0
298088 오랜만이에여 [3] 풀개미'ㅅ'갤로그로 이동합니다. 12.01.10 55 0
298087 아 공부하기 싫다 [4] 퐈응퐈응갤로그로 이동합니다. 12.01.10 76 0
298086 jdk 7 path 설정 좀 도와주세요...솦갤 정전이에요 제발 ㅜㅜ [3] 늅늅이(180.227) 12.01.10 69 0
298085 대2 되는 컴공학생인데요 방학때 뭐 공부할만한것좀요.. [21] 질문좀요(121.167) 12.01.10 221 0
298084 빚 진 것 다 갚았다 [1] 이모군(175.114) 12.01.10 74 0
298083 안녕프겔 [5] 어떡해갤로그로 이동합니다. 12.01.10 103 0
298082 횽들~ 개발자들 업무복장은 어떻게되요? [4] ㅂㅈㄷㄱ(180.67) 12.01.10 143 0
298081 게임업계 포트폴리오 내는데 얼굴인식 시스템 만든거 내면 좆되나? ㅋㅋㅋㅋ [3] ㅁㄴㅇㄹ(59.30) 12.01.10 155 0
298077 포트폴리오 제출 어떻게 하나요? [4] ㅁㄴ(210.107) 12.01.10 98 0
298076 아까 올라온 글에 웹디가 있는거 같던데 KA-1(210.106) 12.01.10 45 0
298075 수능 수리나형 vs c언어 [1] ㅇㅇ(175.211) 12.01.10 116 0
298073 5군데 이력서 넣었는데..... [1] 퐈응퐈응갤로그로 이동합니다. 12.01.10 108 0
298071 SUlinux어떰?? [4] C_Perl갤로그로 이동합니다. 12.01.10 60 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2