일지
알고리즘...47
niamdank
2021. 9. 5. 11:14
이진 검색 트리 출력 함수 제작
차근차근 단계를 밟아 만들어 가기 위해 루트 노드와 두 개의 자식이 있다고 가정한 상태로 진행한다.
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