반응형

참고자료

 

https://jung-story.tistory.com/28?category=826491 

 

자료구조 (이진트리) (binary tree)

개요 이번에는 자료구조 이진트리에 대해서 알아보도록 하겠습니다. 이진트리에 대해서 이해를 한 다음에 코드를 작성해 보도록 하겠습니다. 이진트리(Binary Tree) 개념과 구조 트리의 모든 노드

jung-story.tistory.com

https://jung-story.tistory.com/29?category=826491 

 

자료구조 (이진트리 노드사이즈 크기 구현)

참고자료 https://jung-story.tistory.com/28 자료구조 (이진트리) (binary tree) 이번에는 자료구조 이진트리에 대해서 알아보도록 하겠습니다. 이진트리에 대해서 이해를 한 다음에 코드를 작성해 보도록

jung-story.tistory.com

 


개요

 

이번에는 자료구조 이진트리의 검색과 삽입에 대해서 알아보도록 하겠습니다.

노드를 만들어서 삽입하고 검색하는 방법을 구현한 것입니다.

 


이진트리 검색 , 삽입

 

#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;
}

 


실행화면

 


 

 

반응형

+ Recent posts