KakaoTalk_20190606_001802318.png
  • 246x0w
Welcome
Curriculum
Install&Go
Board
실제 작동 상태를 확인하려면 라이브 사이트로 이동하세요.
  • 카테고리
  • 전체 게시물
  • 내 게시물
wimpy15
2020년 5월 28일

binery tree

게시판: 소스 코드 제출

/*

#include <stdio.h>

#include <stdlib.h>


int main()

{

printf("Hello world!\n");

return 0;

}

*/

/*

#include <stdio.h>


#include <stdlib.h>



typedef struct treeNode


{


char key;


struct treeNode* left;


struct treeNode* right;


} treeNode;



typedef char element;



treeNode* insertNode(treeNode *p, char x)


{


treeNode *newNode;


if(p == NULL)


{


newNode = (treeNode*)malloc(sizeof(treeNode));


newNode -> key = x;


newNode -> left = NULL;


newNode -> right = NULL;


return newNode;


}


else if(x < p->key)

p->left = insertNode(p->left,x);


else if(x > p->key)

p->right = insertNode(p->right,x);


else

printf("\n 이미 값은 키가 있습니다! \n");


return p;


}


void deleteNode(treeNode *root, element key)

{

treeNode *parent, *p, *succ, *succ_parent;

treeNode *child;

parent = NULL;

p = root;

while((p != NULL)&&(p -> key != key))

{

parent = p;

if(key < p ->key)

{

p = p ->left;

}

else

{

p = p->left;

}

}


if(p == NULL)

{

printf("\n 찾는 키가 이진 트리에 없습니다!!");

return;

}

//삭제할 노드가 단말 노드인 경우

if((p -> left == NULL)&& (p->right == NULL))

{

if(parent != NULL)

{

if(parent -> left == p)

{

parent -> left = NULL;

}

else

{

parent -> right = NULL;

}

}

else

{

root = NULL;

}

}

//삭제할 노드가 한 개의 자식 노드를 가진 경우

else if((p -> left == NULL) || (p -> right == NULL))

{

if(p -> left != NULL)

{

child = p -> left;

}

else

{

child = p -> right;

}


if(parent != NULL)

{

if(parent -> left == p)

{

parent -> left = child;

}

else

{

parent -> right = child;

}

}

else

root = child;

}

else

{

succ_parent = p;

succ = p -> left;

while(succ -> right != NULL)

{

succ_parent = succ;

succ = succ-> right;

}

if(succ_parent->left == succ)

succ_parent -> left = succ -> left;


else

succ_parent -> right = succ->left;

p ->key=succ->key;

p = succ;

}

free(p);

}

void menu()

{

printf("\n----------------------------------");

printf("\n\t1 : 트리출력");

printf("\n\t2 : 문자삭제");

printf("\n----------------------------------");

printf("\n메뉴입력 >>");

}

void displayInorder(treeNode* root)

{

if(root)

{

displayInorder(root->left);

printf("%c_",root->key);

displayInorder(root->right);

}

}

int main()

{

treeNode* root = NULL;

treeNode* foundedNode = NULL;

char choice, key;


root = insertNode(root,'G');

insertNode(root,'I');

insertNode(root,'H');

insertNode(root,'D');

insertNode(root,'B');

insertNode(root,'M');

insertNode(root,'N');

insertNode(root,'A');

insertNode(root,'J');

insertNode(root,'E');

insertNode(root,'Q');


while(1)

{

menu();

choice = getchar();

getchar();


switch(choice)

{

case '1':

printf("\t[이진트리 출력] ");

displayInorder(root);

printf("\n");

break;


default:

printf("삭제할 문자를 입력하세여 : ");

key = getchar();

getchar();

deleteNode(root,key);

break;


}

}

}

*/


댓글 0개
0
댓글
댓글 0개
유사 게시물
  • 20220814
  • 도박 게임( 절대 사기 아님!)
  • 220824
주소 : 경기도 용인시 광교중앙로 302 블루 스퀘어 602호
연락처 : 031) 216 - 1546
사업자등록번호 : 465-92-00916
​학원 등록 제 4603호