알고리즘
-
알고리즘...50일지 2021. 9. 8. 01:25
이진 검색 트리 출력 함수 제작 노드의 깊이와 넓이의 관계를 파악하기 위해 1, 4 를 추가한다. main.cpp #include "Common.h" #include "검색트리/BinarySearchTree.h" int main() { int n = 9; int* arr; // 동작 테스트를 위한 값 //arr = new int[n]{ 2, 4, 6, 8, 10, 9, 7, 5, 3, 1 }; arr = new int[n]{ 10, 5, 20, 3, 7, 15, 25, 1, 4 }; BinarySearchTree tree; for (int i = 0; i < n; i++) { tree.Insert(arr[i]); } tree.PrintBinarySearchTree(); //tree.Delete(5); /..
-
알고리즘...49일지 2021. 9. 7. 19:06
이진 검색 트리 출력 함수 제작 추가로 3, 7, 15, 25를 추가하여 트리를 출력하고자 한다. main.cpp #include "Common.h" #include "검색트리/BinarySearchTree.h" int main() { int n = 7; int* arr; // 동작 테스트를 위한 값 //arr = new int[n]{ 2, 4, 6, 8, 10, 9, 7, 5, 3, 1 }; arr = new int[7]{ 10, 5, 20, 3, 7, 15, 25 }; BinarySearchTree tree; for (int i = 0; i < n; i++) { tree.Insert(arr[i]); } tree.PrintBinarySearchTree(); //tree.Delete(5); //tree...
-
알고리즘...48일지 2021. 9. 6. 00:59
이진 검색 트리 출력 함수 제작 깊이가 2 인 경우의 출력 완료 BinarySearchTree.cpp /// /// 이진 검색 트리를 출력한다. /// void BinarySearchTree::PrintBinarySearchTree() { if (_root == nullptr) { std::cout left != nullptr) { _queue.push(node->left); } if (node->right != nullptr) { _queue.push(node->right); } } std::cout GetMaxDepth() }; int center{ (depth - 1) * 5 / 2 }; bool isNeedReturn{ ((node == _root) || IsRightNode(node) && Is..
-
알고리즘...47일지 2021. 9. 5. 11:14
이진 검색 트리 출력 함수 제작 차근차근 단계를 밟아 만들어 가기 위해 루트 노드와 두 개의 자식이 있다고 가정한 상태로 진행한다. BinarySearchTree.cpp /// /// 이진 검색 트리를 출력한다. /// void BinarySearchTree::PrintBinarySearchTree() { if (_root == nullptr) { std::cout 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
-
알고리즘...45일지 2021. 9. 2. 09:31
이진 탐색 트리 출력 이진 탐색 트리 구현 후 테스트를 위한 출력 함수를 만든다. 이때 다음과 같은 정보가 필요하다. 노드의 간격과 왼쪽 공백에 필요한 정보 루트 기준으로 최대 깊이를 파악하여 깊이에 따라 간격을 조절한다. 노드의 출력 순서 라인별로 출력이 되어야 하므로 BFS를 이용하여 출력을 진행한다. 깊이 파악을 위한 함수 struct BinarySearchNode { int GetMaxDepth() { int leftMaxDepth{ left != nullptr ? left->GetMaxDepth() : 0 }; int rightMaxDpth{ right != nullptr ? right->GetMaxDepth() : 0 }; return (leftMaxDepth > rightMaxDpth ? l..
-
알고리즘...44일지 2021. 8. 31. 01:28
AVL 트리 구현 AVLTree.h #pragma once #include "../Common.h" /// /// AVL 트리에 사용할 노드 /// struct AVLNode { AVLNode() : data{ 0 }, bf{ 0 }, parent{ nullptr }, left{ nullptr }, right{ nullptr } {} AVLNode(int data) : data{ data }, bf{ 0 }, parent{ nullptr }, left{ nullptr }, right{ nullptr } {} void Clear() { data = 0; parent = nullptr; left = nullptr; right = nullptr; } bool HasBalanceProblem() { return..
-
알고리즘...43일지 2021. 8. 30. 15:57
AVL 트리 구현 준비 이진 검색 트리를 기반으로 AVL 트리를 구현하기 위해 필요한 정보를 추가한다. AVLTree.h #pragma once #include "../Common.h" /// /// AVL 트리에 사용할 노드 /// struct AVLNode { AVLNode() : data{ 0 }, bf{ 0 }, parent{ nullptr }, left{ nullptr }, right{ nullptr } {} AVLNode(int data) : data{ data }, bf{ 0 }, parent{ nullptr }, left{ nullptr }, right{ nullptr } {} void Clear() { data = 0; parent = nullptr; left = nullptr; righ..