-
이진 탐색 트리 구현 준비
구현에 필요한 메서드 및 속성은 다음과 같다.
- 속성
- Count BinarySearchTree에 포함된 데이터의 개수
- Max BinarySearchTree에 추가된 데이터 중 가장 큰 값
- Min BinarySearchTree에 추가된 데이터 중 가장 작은 값
- 메서드
- Search(data) 데이터가 저장되어 있는지 여부 확인
- Insert(data) BinarySearchTree의 규칙에 맞게 데이터를 저장
- Delete(data) 일치하는 데이터를 제거하고 실행 결과를 반환
- Clear() 저장되어 있는 모든 데이터 삭제
이진 탐색 트리 구현
연결 자료구조를 이용하여 이진 탐색 트리를 구현한다.
BinarySearchTree.h
#pragma once #include <iostream> class BinarySearchTree { public: #pragma region 노드 struct Node { Node() {} Node(int value) { m_data = value; } int m_data{ 0 }; Node* m_prev{ nullptr }; Node* m_next{ nullptr }; }; #pragma endregion #pragma region 생성자 BinarySearchTree(); ~BinarySearchTree(); #pragma endregion #pragma region 속성 const size_t Count() { return m_count; } const int Max() { return m_max; } const int Min() { return m_min; } #pragma endregion #pragma region 메서드 void Insert(int value); void Delete(int value); void Clear(); bool Search(int value); void PrintInfo(); #pragma endregion private: #pragma region Class Util Node* PopNode(int value); void PushNode(Node* node); #pragma endregion #pragma region 변수 size_t m_count; int m_min; int m_max; Node* m_root; Node* m_free; #pragma endregion };
- 속성