일지

알고리즘...46

niamdank 2021. 9. 3. 10:27

이진 검색 트리 출력 함수 제작 진행

출력이 위에서부터 아래로 진행되어야 하므로 DFS를 이용한 함수를 만들어 테스트를 진행한다.

 

BinarySearchTree.cpp

/// <summary>
/// 이진 검색 트리를 출력한다.
/// </summary>
void BinarySearchTree::PrintBinarySearchTree()
{
	if (_root == nullptr)
	{
		std::cout << "EMPTY\n";
		return;
	}

	_queue.push(_root);
	while (!_queue.empty())
	{
		BinarySearchNode* node{ _queue.front() };
		_queue.pop();

		std::cout << node->data << ' ';

		if (node == _root || IsRightNode(node))
		{
			std::cout << '\n';
		}

		if (node->left != nullptr)
		{
			_queue.push(node->left);
		}
		if (node->right != nullptr)
		{
			_queue.push(node->right);
		}
	}
    
	std::cout << "\n\n";
}

 

main.cpp

int main()
{
	int n = 10;
	int* arr;

	// 동작 테스트를 위한 값
	arr = new int[n]{ 2, 4, 6, 8, 10, 9, 7, 5, 3, 1 };

	BinarySearchTree tree;
	for (int i = 0; i < n; i++)
	{
		tree.Insert(arr[i]);
	}
	tree.PrintBinarySearchTree();

	tree.Delete(5);
	tree.PrintBinarySearchTree();

	delete[] arr;
}

 

출력 결과

2
1 4
3 6
5 8
7 10
9

2
1 4
3 6
8
7 10
9

 

단순히 DFS로 진행하는 게 아니라 각 노드의 깊이 값에 따라 모양을 저장하고 순서대로 출력해야 할 것 같다.