반응형
참고자료
https://jung-story.tistory.com/28?category=826491
https://jung-story.tistory.com/29?category=826491
개요
이번에는 자료구조 이진트리의 검색과 삽입에 대해서 알아보도록 하겠습니다.
노드를 만들어서 삽입하고 검색하는 방법을 구현한 것입니다.
이진트리 검색 , 삽입
#include <stdio.h>
typedef struct treeNode {
int key;
struct treeNode* lchild;
struct treeNode* rchild;
}treeNode;
treeNode* makeNode(int key, treeNode* lchildeNode, treeNode* rchildNode) {
treeNode* Node = (treeNode*)malloc(sizeof(treeNode));
Node->key = key;
Node->lchild = lchildeNode;
Node->rchild = rchildNode;
return Node;
}
treeNode* SearchNode(treeNode* root, int x) {
treeNode* p;
p = root;
while (p != NULL) {
if (x < p->key) p = p->lchild;
else if (x > p->key)p = p->rchild;
else if (x == p->key) return p;
}
return p;
}
treeNode* InsertNode(treeNode* p, int x) {
treeNode* newNode;
if (p == NULL) {
newNode = (treeNode*)malloc(sizeof(treeNode));
newNode->key = x;
newNode->lchild = NULL;
newNode->rchild = NULL;
return newNode;
}
else if (x < p->key) {
p->lchild = InsertNode(p->lchild, x);
}
else if (x > p->key) {
p->rchild = InsertNode(p->rchild, x);
}
else if (x == p->key) return 0;
return p;
}
void ShowInfo(treeNode* root) {
if (root) {
ShowInfo(root->lchild);
printf("%2d \n", root->key);
ShowInfo(root->rchild);
}
}
int main(void) {
treeNode* Node = makeNode(50, NULL, NULL);
InsertNode(Node, 52);
InsertNode(Node, 40);
InsertNode(Node, 30);
InsertNode(Node, 20);
InsertNode(Node, 10);
printf("%d", SearchNode(Node, 30)->key);
return 0;
}
실행화면
반응형
'알고리즘 & 자료구조 > 자료구조' 카테고리의 다른 글
자료구조 C언어 (Recursion 함수 와 동적할당) (0) | 2020.04.15 |
---|---|
자료구조 (이진트리 Binary Tree 순회 , 이진순회) (0) | 2019.12.02 |
자료구조 (이진트리 노드사이즈 크기 구현) (0) | 2019.12.02 |
자료구조 (이진트리) (binary tree) (0) | 2019.12.02 |
자료구조 (데크) (0) | 2019.12.02 |