일지

자료구조...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
};