디시인사이드 갤러리

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

갤러리 본문 영역

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

김성엽(203.253) 2012.01.09 20:43:58
조회 140 추천 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/17 - -
AD 겨울가전 SALE! 쿨한 겨울 HOT세일 운영자 25/11/12 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48707 65
2903171 '19' 파이즈리 치는녀 실시간. gif 프갤러(61.84) 01:58 1 0
2903170 틱톡 세번째 자동추천에 호남비하 영상 뜬다 [2] 발명도둑잡기(118.216) 01:58 2 0
2903169 '19' 젖 제로투 추는 BJ.gif 프갤러(59.25) 01:56 1 0
2903168 '19' 맥심 모델 출신 여 BJ. gif 프갤러(61.84) 01:55 1 0
2903161 러스트 담론을 해체하다: 2. 러스트 채택 요인 나르시갤로그로 이동합니다. 01:38 4 0
2903158 러스트 담론을 해체하다: 1. 러스트 언어 소개 및 주요 특징 나르시갤로그로 이동합니다. 01:33 8 0
2903157 ㅅㅂ 여기 제2의 원종이들 많노 ㅇㅇ(49.168) 01:32 13 0
2903156 밤에 집앞에서 보이는 풍경..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 01:32 10 0
2903155 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 01:31 8 0
2903153 [기자수첩] ‘새벽배송 멈추면 죽는다’던 사장님이 도달한 뜻밖의 결론 발명도둑잡기(118.216) 01:28 7 0
2903152 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 01:28 9 0
2903150 Ai 딜도코딩 프갤러(49.165) 01:26 5 0
2903148 에어로홍 그래도 괜찮은 인간이었는데 어쩌다 조현병이 들어서.. ㅇㅇ(218.149) 01:11 19 0
2903146 박민준 갤로그 주소 u123456 발명도둑잡기(118.216) 01:03 16 0
2903139 발명도둑잡기가 호감고닉되려면 할일 [6] 박민준갤로그로 이동합니다. 00:10 49 4
2903137 병신새끼야 정치얘기는 정사갤가서 하라고 [4] 박민준갤로그로 이동합니다. 11.17 69 3
2903136 오늘의 소설, 영화 실마리: 부동산 24시간 점유시 소유권 획득 발명도둑잡기(118.216) 11.17 14 0
2903134 러스트 담론을 해체하다: 머리말 [3] 나르시갤로그로 이동합니다. 11.17 20 0
2903133 소프트웨어에서 마법사 발명도둑잡기(118.216) 11.17 21 0
2903132 형들 도와줘 해킹 [11] 프갤러(1.235) 11.17 77 0
2903131 fa쪽으로 일하는 사람들은 보통 전공 뭐임?? [1] 프갤러(59.21) 11.17 28 0
2903128 <부고니아> 간단 소감 [1] 발명도둑잡기(118.216) 11.17 18 0
2903127 [애니뉴스] ImagesToPdf 이미지 파일 PDF로 변환 개발 끝- 프갤러(121.172) 11.17 28 0
2903126 새끼길냥이 절망편 [1] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 29 0
2903125 현재 코딩 배워야 하는 이유는 인공지능 버그 디버깅인데 [1] 발명도둑잡기(118.216) 11.17 34 0
2903124 <오페라의 유령> 배경 파리 가르니에 극장 발명도둑잡기(118.216) 11.17 12 0
2903123 새끼길냥이 희망편 [1] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 29 0
2903121 ㅈ같더라도 버텨야하나 [7] ㅇㅇ(124.48) 11.17 55 1
2903120 진짜 물어 볼 곳이 정 없어서 여기서 물어 봄 제바류 [5] 프갤러(220.82) 11.17 57 0
2903118 날 추워지니까 새끼길냥이 안 보임.. [5] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 29 0
2903117 바이브 코딩 볼때마다 아찔하던데 ㅋㅋ ㅇㅇ갤로그로 이동합니다. 11.17 35 0
2903111 의사들이 밤 12시 이전에 자라고 하는 이유 [1] 발명도둑잡기(118.216) 11.17 31 0
2903109 이제보니 KBS 이거 나님 이거 멕이는거 아님? [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 39 0
2903108 '한일령'돌입 中, 독도 간접거론해 韓우회지지?…"日악성언행" 발명도둑잡기(118.216) 11.17 21 0
2903104 냥덩 만화상 이 만화가 대단하당⭐ 17회 수상작 [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 24 0
2903103 독학할만한 책같은거 추천해주실수 있나요? [1] ㅇㅇ갤로그로 이동합니다. 11.17 25 0
2903102 나님 왤케 순수할깡..? [3] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 50 0
2903101 저장용 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 16 0
2903100 홈플러스 가격 똥값되면 노동자들이 회사를 구입할 수 있다 발명도둑잡기(118.216) 11.17 13 0
2903099 Cornelius-Typewrite Lesson 발명도둑잡기(118.216) 11.17 14 0
2903098 와 ai로 만든거 ㄷㅅㄷ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 44 0
2903097 4년차 월 580받는데 개사기였구나 [4] 프갤러(211.235) 11.17 71 0
2903096 나님 이번 겨울 강철체력 위해 찬물샤워 결정! ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 21 0
2903093 데브시스터즈와 불고기 브라더스가 합병하면 [2] ㅇㅇ(49.165) 11.17 23 0
2903092 충격적임.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 18 0
2903090 3억으로 7800억 가져간 대장동 사건 파헤치기 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.17 30 0
2903087 우리가 알던 허균이 아냐 양반 of 양반 허균에 대해 우리가 몰랐던 발명도둑잡기(118.216) 11.17 15 0
2903086 Lua VM과 JIT을 "짧고 정갈하게, 어려운 걸 쉽게 풀었다" [5] 나르시갤로그로 이동합니다. 11.17 31 0
2903085 핸드폰 샀는데 서울 수도권에서 Xperia C3 케이스 파시는 없을까요 넥도리아(220.74) 11.17 11 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2