-
이진 탐색 트리 삭제, 기능 메서드 구현
BinarySearchTree.cpp
/// <summary> /// BinarySearchTree의 모든 노드를 제거한다. /// </summary> void BinarySearchTree::Clear() { while (m_root != nullptr) { Delete(m_root->m_data); } } /// <summary> /// BinarySearchTree에 지정된 값이 존재하는지 검색한다. /// </summary> /// <param name="value">검색할 값</param> bool BinarySearchTree::Search(int value) { if (m_root == nullptr) { return false; } Node* target{ m_root }; while (target != nullptr) { if (target->m_data == value) { break; } if (target->m_data > value) { target = target->m_left; } else { target = target->m_right; } } return target != nullptr; }
main.cpp
#include <iostream> #include "BinarySearchTree/BinarySearchTree.h" // 생성한 자료구조 테스트용 메인 int main() { BinarySearchTree bst; bst.Insert(5); bst.Insert(3); bst.Insert(1); bst.Insert(0); bst.Insert(4); bst.Insert(8); bst.Insert(7); bst.Insert(9); bst.PrintInfo(); bst.Delete(5); bst.PrintInfo(); std::cout << std::boolalpha << bst.Search(5) << '\n'; std::cout << std::boolalpha << bst.Search(9) << '\n'; bst.Clear(); bst.PrintInfo(); }
실행 결과
---------------------- └ 5 └ 3 └ 1 └ 0 └ 4 └ 8 └ 7 └ 9 ---------------------- ---------------------- └ 4 └ 3 └ 1 └ 0 └ 8 └ 7 └ 9 ---------------------- false true ---------------------- ----------------------