디시인사이드 갤러리

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

갤러리 본문 영역

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

김성엽(203.253) 2012.01.09 20:43:58
조회 135 추천 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 - -
298128 여자가 자기를 좋아하는지 안하는지 확인법 □ㅁ갤로그로 이동합니다. 12.01.11 68 0
298127 헐 타과 수업 들으면 향수냄새 진동하나요? 군대지원(222.101) 12.01.11 53 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 133 0
298121 해피투게더 재방보는데 [1] ㅋㄱ(183.96) 12.01.11 68 0
298120 아오 이제 자야겠다~~ 오늘 너무 버닝했네 거칠게갤로그로 이동합니다. 12.01.11 67 0
298119 난 아직도 여자들의 내숭과 거절을 잘 구분 못하겠어 -_- [1] 거칠게갤로그로 이동합니다. 12.01.11 145 0
298118 진짜 여자들의 위장술은 조심해야 한다 [1] 거칠게갤로그로 이동합니다. 12.01.11 205 0
298115 아무리 날고 겨도 등장 임팩트는 SES가 최고지 [5] 야요이갤로그로 이동합니다. 12.01.11 93 0
298114 걸그룹 중 베스트 오브 베스트를 뽑아보자!! [7] 거칠게갤로그로 이동합니다. 12.01.11 99 0
298113 걸그룹의 최고봉을 결정하자!! [10] 거칠게갤로그로 이동합니다. 12.01.11 120 0
298112 내가 아는 걸그룹 목록 [24] 거칠게갤로그로 이동합니다. 12.01.11 156 0
298111 진짜, 좋아요.~~Good.// [1] 학교가자갤로그로 이동합니다. 12.01.11 31 0
298110 같은 과로 얘도 갠찬치안스믑니까/ [5] ㅋㄱ(183.96) 12.01.11 167 0
298108 진심은 통한다는 말 따윈 이제 믿지않는다. 진심(211.221) 12.01.11 72 0
298106 내 공부 로드맵인데 좀 봐주라 [4] 도와주십시오(59.26) 12.01.11 203 0
298105 잠이 안온다. [1] ssonacy갤로그로 이동합니다. 12.01.11 61 0
298103 오픈지엘 조명쏘는데염.. ㅋㄱ(183.96) 12.01.11 56 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 134 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 112 0
298092 형들 나 모든 확장자가 실행이 안됨... [3] 유동닉(183.108) 12.01.10 51 0
298090 디시 검색기능 좀 병신같이 바뀌지 않았음? [4] ㅇㅇㅇ(121.144) 12.01.10 177 0
298089 존내 멋진 공뭔들의 프로그램 배포방식.... [3] ㅅㄱㅅㄱㅅㄱ갤로그로 이동합니다. 12.01.10 127 0
298088 오랜만이에여 [3] 풀개미'ㅅ'갤로그로 이동합니다. 12.01.10 54 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 220 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 154 0
298077 포트폴리오 제출 어떻게 하나요? [4] ㅁㄴ(210.107) 12.01.10 97 0
298076 아까 올라온 글에 웹디가 있는거 같던데 KA-1(210.106) 12.01.10 45 0
298075 수능 수리나형 vs c언어 [1] ㅇㅇ(175.211) 12.01.10 115 0
298073 5군데 이력서 넣었는데..... [1] 퐈응퐈응갤로그로 이동합니다. 12.01.10 106 0
298071 SUlinux어떰?? [4] C_Perl갤로그로 이동합니다. 12.01.10 60 0
298070 현재242,355의 위치의 픽셀의 색상값을 엑셀에G13에 표시하려면 엑셀(216.232) 12.01.10 311 0
298069 연봉 5천준다고 오라는데..어쩔까.... [1] 캐뻘짓닭(115.92) 12.01.10 219 0
298068 회사에 여자플머 4명이 있다. [1] 캐뻘짓닭(115.92) 12.01.10 239 0
298066 형들 병특질문점요 [2] aaasss(121.166) 12.01.10 107 0
298065 눈 안좋아지게 하는 방법이 뭐가 있을까 [7] elwlwlwk갤로그로 이동합니다. 12.01.10 157 0
298064 컴공가면 병특 가능?? [3] dd(175.211) 12.01.10 198 0
298063 C언어 배워보려고 열혈강의C프로그래밍 빌려왔는데 [5] J.min갤로그로 이동합니다. 12.01.10 184 0
298062 게임업계는 이제 서버/그래픽 디자이너로 흘러가게 된다능... [11] ㅇㅇ(221.147) 12.01.10 216 0
298061 프로그래머될라면 어떻게함? [4] dd(175.211) 12.01.10 132 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2