디시인사이드 갤러리

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

갤러리 본문 영역

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

김성엽(203.253) 2012.01.09 20:43:58
조회 129 추천 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/03 - -
AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
297954 touching..........// Good..!!! 학교가자갤로그로 이동합니다. 12.01.10 30 0
297953 소드마스터님 [24] 헬프미(125.177) 12.01.10 150 0
297952 이정도 스펙이면 대기업si 뚫을수있냐 [8] 평가좀(110.15) 12.01.10 566 0
297951 모바일 웹페이지(스마트폰용)을 개발할려고 하는데 책좀 추천해줘.. (112.152) 12.01.10 71 0
297950 부모님 결혼기념일 선물 적당한거 머 있을까요~? [3] 양랩(220.119) 12.01.10 104 0
297949 나 프로그래밍에 소질이 없는거지? [6] C초보 ㅋ(121.157) 12.01.10 197 0
297948 정중하게 부탁드립니다 [9] 헬프미(125.177) 12.01.10 110 0
297945 2차원 배열을 해서 곱을 구하는거같은데 핼프좀 [1] C초보 ㅋ(121.157) 12.01.09 74 0
297943 간단한 자바스크립트 질문여.. [3] Partyup갤로그로 이동합니다. 12.01.09 75 0
297942 게임 프로그래밍 하기 좋은 언어랑 책좀 추천요 [2] 야요이갤로그로 이동합니다. 12.01.09 97 0
297940 ************ 오늘의 문제 **************** [7] 다채(211.230) 12.01.09 102 0
297939 배열에 있는 정보를 문자열로 만드는거 질문좀 드릴게요 [2] aaa(175.207) 12.01.09 42 0
297937 c# 루프 돌아가다가 멈춤 [4] ㅊㅊ(61.75) 12.01.09 111 0
297936 형 질문 [1] 쒦뚫쉚뚫샒휆뚫뚫쒦갤로그로 이동합니다. 12.01.09 38 0
297933 JAVA 온라인강의로도 취업가능한가요? [1] 촙초보(116.40) 12.01.09 149 0
297932 썬더볼트 기술 쩌네.. ㅅㅂ... usb sata다 버리고싶다 Stan(220.244) 12.01.09 94 0
297931 POREN or BICNS 안드로이드개발자 채용확정자 국비지원 전원취업교 국비지원갤로그로 이동합니다. 12.01.09 42 0
형들 이진트리 반복문을 통한 순회 코드인데요.... [6] 김성엽(203.253) 12.01.09 129 0
297928 php 뉴빈데 php자격증이있음?? [1] 늅늅(121.130) 12.01.09 108 0
297926 c언어 과젠데 졸 어렵다 ㅜ.ㅜ [10] 메카돼지(14.37) 12.01.09 153 0
297925 형들 이클립스 작업창 질문점.. [5] ㅇㅇ(61.109) 12.01.09 114 0
297923 c초보가 올리는 질문 글 입니다요... [2] C초보(114.206) 12.01.09 53 0
297921 횽들! 나 오늘은 배열을 공부했어! [4] 쿠마코갤로그로 이동합니다. 12.01.09 75 0
297920 간만에 웹 제작을 해야해서 선택한 프레임웍인데 좀 봐줘 엠비씨(183.1) 12.01.09 54 0
297919 밥먹고 왔는데 ㅋㅋ 곽팀장 너 나 너무 좋아하는거 아니냐 ㅋㅋ 캐db닭(115.92) 12.01.09 64 0
297918 형아들 겔러리 짤중에.....ㅠㅠ 정통27갤로그로 이동합니다. 12.01.09 36 0
297917 횽들아 요즘 자바공부하는데 상속 질문좀 할게 [8] 메리프갤로그로 이동합니다. 12.01.09 85 0
297916 슈레기 같은 SVN -=- [3] Ynobe갤로그로 이동합니다. 12.01.09 100 0
297915 형들 이거 미친짓이야?? 내 친구가 취업 안하고 있길래 뭐하냐 물어봤는데 [5] ㅁㄴㅇㄹ(59.30) 12.01.09 195 0
297913 횽들~ 넷북으로 자바/JSP/MYSQL 공부는 할수잇음? [2] 조자바(121.140) 12.01.09 300 0
297912 망하는 제품의 흔한 개발 과정.avi [4] 때릴꺼야?(116.40) 12.01.09 192 0
297911 "GDI객체를 이용한 이미지 트래킹" 기술은 어디서 배우는거임??.. [1] 제이드(175.122) 12.01.09 48 0
297910 형들 stack에서 팝 연산있잖아요 [3] SoliCode갤로그로 이동합니다. 12.01.09 53 0
297906 학원 프로젝트 고민... [6] 찹쌀뀨갤로그로 이동합니다. 12.01.09 150 0
297905 곽노현팀장 너야말로 뭔낯짝? ㅈㅈㅈ(116.125) 12.01.09 51 0
297902 성님들 ㅠㅠ 폴더안에있는 파일만 밖으로끄집어내는 방법좀알려주세요 [2] 유동찐따ㅠㅠ(14.55) 12.01.09 89 0
297901 맥 vs PC [14] ㅇㅇ(211.115) 12.01.09 129 0
297900 html 질문 드려요.. [5] html(203.171) 12.01.09 69 0
297899 C에서 fopen / 포인터 사용문제.. 어느 방법이 더 나을까요? [3] 에버리치갤로그로 이동합니다. 12.01.09 63 0
297897 DB 고수 or 프로시져에 대해서 좀 잘아는횽 소환 [7] 캐db닭(115.92) 12.01.09 99 0
297896 형들 만들고 싶은게 있는데 [4] 쒦뚫쉚뚫샒휆뚫뚫쒦갤로그로 이동합니다. 12.01.09 99 0
297895 신봉선도 꾸미기 나름이지 않음? [9] 캐미친닭(115.92) 12.01.09 159 0
297894 야 c언어 java 이런거 배우기 어렵냐? [8] 트럴성기사갤로그로 이동합니다. 12.01.09 203 0
297893 형들 질문좀용 [3] 쒦뚫쉚뚫샒휆뚫뚫쒦갤로그로 이동합니다. 12.01.09 50 0
297892 레지스트리에 관련된 질문. 솔직히 질문도 막막한데 답변주면 진짜 갓인증 [10] 한번 풀어봐(59.22) 12.01.09 88 0
297890 요즘 신봉선이 이뻐보인다. [7] 캐미친닭(115.92) 12.01.09 124 0
297889 인류의 조상이라는데? [1] 이모군(175.114) 12.01.09 85 0
297888 횽들 이거 머가 잘못된거야? [2] 람퐈니갤로그로 이동합니다. 12.01.09 57 0
297885 월요병 극복 하는 방법 [3] ㅇㅇㅇ갤로그로 이동합니다. 12.01.09 78 0
297882 소녀시대 과거사진, CF 무리수+난감 콘셉트 '소시에게도 굴욕 과거가?' 쿄스케갤로그로 이동합니다. 12.01.09 67 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2