-
이진 검색 트리 출력 함수 제작
차근차근 단계를 밟아 만들어 가기 위해 루트 노드와 두 개의 자식이 있다고 가정한 상태로 진행한다.
BinarySearchTree.cpp
/// <summary> /// 이진 검색 트리를 출력한다. /// </summary> void BinarySearchTree::PrintBinarySearchTree() { if (_root == nullptr) { std::cout << "EMPTY\n"; return; } BinarySearchNode* node{ _root }; int depth{ node->GetMaxDepth() }; int center{ (depth - 1) * 5 / 2 }; bool isNeedReturn{ ((node == _root) || IsRightNode(node) && IsRightNode(node->parent)) }; for (int i = 0; i < center; i++) { std::cout << ' '; } std::cout << node->data; for (int i = 0; i < center; i++) { std::cout << ' '; } if (isNeedReturn) { std::cout << '\n'; } std::cout << "┌"; for (int i = 1; i < center; i++) { std::cout << "─"; } std::cout << "┴"; for (int i = 1; i < center; i++) { std::cout << "─"; } std::cout << "┐"; if (isNeedReturn) { std::cout << '\n'; } std::cout << "\n\n"; }
main.cpp
#include "Common.h" #include "검색트리/BinarySearchTree.h" int main() { int n = 3; int* arr; // 동작 테스트를 위한 값 //arr = new int[n]{ 2, 4, 6, 8, 10, 9, 7, 5, 3, 1 }; arr = new int[3]{ 10, 5, 20 }; BinarySearchTree tree; for (int i = 0; i < n; i++) { tree.Insert(arr[i]); } tree.PrintBinarySearchTree(); //tree.Delete(5); //tree.PrintBinarySearchTree(); // 출력하고 싶은 모양 std::cout << " 10\n"; std::cout << "┌─┴─┐\n"; std::cout << "5 20\n"; delete[] arr; }
실행결과
10 ┌─┴─┐ 10 ┌─┴─┐ 5 20