이진 탐색 트리(4)
-
[C++] BST의 중위 후속자, 중위 선행자 및 BST의 삭제 구현
아래 링크 클릭 시 해당 본문으로 이동BST 중위 후속자, 중위 선행자 구현코드BST의 삭제BST의 삭제 예시 (CBST.h 전체 코드)예시 1 (25 삭제)예시 2 (100만 있는 경우)예시 3 (자식이 1개 있는 경우 (75를 제외하고 50 삭제))예시 4 (100, 150 빼고 다 제외, 100 삭제)예시 5 (자식이 2개 있는 경우 (150 삭제))예시 5-1 (자식이 2개 있는 경우 (100 삭제))BST 중위 후속자, 중위 선행자 구현▷ 예시CBST.h#pragma once#include // 서로를 가리킬 수 있는 노드 타입enum class NODE_TYPE{ PARENT, // 부모 노드 // 0 LCHILD, // 왼쪽 자식 // 1 RCHILD, // 오른쪽 자식 // 2 ..
2024.04.04 -
[C++] enum 클래스를 활용하여 BST(이진 탐색 트리) 구현
enum 클래스로 서로를 가리킬 수 있는 노드 타입을 지정한다.`tBSTNode`에 부모, 왼쪽 자식, 오른쪽 자식을 가리키는 각각의 포인터를 enum 클래스에 정리해 놓는다.CBST.h#pragma once// 서로를 가리킬 수 있는 노드 타입enum class NODE_TYPE{ // (인덱스의 이름이라고 생각하기) PARENT, // 부모 노드 // 0 LCHILD, // 왼쪽 자식 // 1 RCHILD, // 오른쪽 자식 // 2 END, // 마감 // 3};// data 파트에 해당하는 구조체templatestruct tPair{ T1 first; T2 second;};// make_pair() 함수templatetPair make_bstpair(const T1& _first, ..
2024.04.04 -
[C++] BST(이진 탐색 트리) 구현
CBST.h#pragma once// data 파트에 해당하는 구조체templatestruct tPair{ T1 first; T2 second;};// 노드라는 데이터 타입 단위templatestruct tBSTNode{ // data 파트(map에서는 pair라고 함.)를 가리키는 포인터 tPair pair; // 부모 노드를 가리키는 포인터 tBSTNode* pParent; // 자식 노드를 가리키는 포인터 tBSTNode* pLeftChild; tBSTNode* pRightChild;};templateclass CBST{private: // BST는 루트 노드만 알면 된다. tBSTNode* m_pRoot; // 루트 노드 주소 int m_iCount; // 데이터 개수public: bool i..
2024.04.03 -
[C++] 트리(Tree), set과 map
아래 링크 클릭 시 해당 본문으로 이동트리(Tree)이진 트리완전 이진 트리(Complete Binary Tree)이진 탐색 트리(Binary Search Tree, BST)트리 순회 (Tree Traversal)중위 후속자중위 선행자set과 mapsetmapmake_pair()과 find()그래프• 리스트에서 노드를 그래프에서는 vertex(정점)라고 한다.ex) 지하철 노선도트리(Tree)• 그래프의 일종으로, 순회가 불가능한 그래프이다.• 순회(curcit) : 처음 시작 노드부터 다시 자기 자리로 돌아오는 것• 계층 관계를 표현할 때 사용한다. ex) 가족 관계도, 조직도• 부모 노드와 자식 노드를 연결한다. ex) 윈도우의 폴더 구조트리 용어 정리• 이진 트리 : 자식의 개수가 2개 이하인 ..
2024.03.22