일지
자료구조...66
niamdank
2021. 3. 16. 21:02
이진 탐색 트리 구현 준비
구현에 필요한 메서드 및 속성은 다음과 같다.
- 속성
- 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
};