Created
May 15, 2025 07:39
-
-
Save untainsYD/f7491dfe604eb6c9baee8230485e5c88 to your computer and use it in GitHub Desktop.
BinaryTreeTestClass
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package lab4; | |
import lab4.tree.BinaryTree; | |
/** | |
* Тестування бінарного дерева пошуку з функцією видалення елементів | |
*/ | |
public class Task9 { | |
public static void main(String[] args) { | |
// Основне тестування | |
testBinaryTree(); | |
// Тестування видалення кореня | |
testRemoveRoot(); | |
// Тестування видалення листа | |
testRemoveLeaf(); | |
// Тестування видалення вузла з одним дочірнім | |
testRemoveOneChild(); | |
// Тестування видалення вузла з двома дочірніми | |
testRemoveTwoChildren(); | |
// Тестування видалення неіснуючого вузла | |
testRemoveNonExistent(); | |
} | |
/** | |
* Основне тестування дерева, аналогічне прикладу 3.9 | |
*/ | |
private static void testBinaryTree() { | |
System.out.println("=== Базове тестування дерева ==="); | |
BinaryTree continents = new BinaryTree(); | |
continents.addNode(1, "Європа"); | |
continents.addNode(3, "Африка"); | |
continents.addNode(5, "Австралія"); | |
continents.addNode(4, "Америка"); | |
continents.addNode(2, "Азія"); | |
continents.addNode(6, "Антарктида"); | |
System.out.println("Виведення всіх континентів в порядку зростання ключів:"); | |
continents.traverseTree(); | |
System.out.println("\nВиведення структури дерева:"); | |
continents.printTree(); | |
System.out.println("\nКонтинент з ключем 4:"); | |
System.out.println(continents.findNode(4)); | |
System.out.println(); | |
} | |
/** | |
* Тестування видалення кореня дерева | |
*/ | |
private static void testRemoveRoot() { | |
System.out.println("=== Тестування видалення кореня дерева ==="); | |
BinaryTree tree = new BinaryTree(); | |
tree.addNode(50, "Корінь"); | |
tree.addNode(30, "Лівий"); | |
tree.addNode(70, "Правий"); | |
tree.addNode(20, "Лівий-лівий"); | |
tree.addNode(40, "Лівий-правий"); | |
tree.addNode(60, "Правий-лівий"); | |
tree.addNode(80, "Правий-правий"); | |
System.out.println("Дерево до видалення кореня:"); | |
tree.printTree(); | |
System.out.println("\nВидаляємо корінь (ключ 50):"); | |
boolean removed = tree.removeNode(50); | |
System.out.println("Елемент видалено: " + removed); | |
System.out.println("\nДерево після видалення кореня:"); | |
tree.printTree(); | |
System.out.println(); | |
} | |
/** | |
* Тестування видалення листового вузла | |
*/ | |
private static void testRemoveLeaf() { | |
System.out.println("=== Тестування видалення листового вузла ==="); | |
BinaryTree tree = new BinaryTree(); | |
tree.addNode(50, "Корінь"); | |
tree.addNode(30, "Лівий"); | |
tree.addNode(70, "Правий"); | |
tree.addNode(20, "Лівий-лівий"); | |
System.out.println("Дерево до видалення листа:"); | |
tree.printTree(); | |
System.out.println("\nВидаляємо лист (ключ 20):"); | |
boolean removed = tree.removeNode(20); | |
System.out.println("Елемент видалено: " + removed); | |
System.out.println("\nДерево після видалення листа:"); | |
tree.printTree(); | |
System.out.println(); | |
} | |
/** | |
* Тестування видалення вузла з одним дочірнім вузлом | |
*/ | |
private static void testRemoveOneChild() { | |
System.out.println("=== Тестування видалення вузла з одним дочірнім вузлом ==="); | |
BinaryTree tree = new BinaryTree(); | |
tree.addNode(50, "Корінь"); | |
tree.addNode(30, "Лівий"); | |
tree.addNode(70, "Правий"); | |
tree.addNode(20, "Лівий-лівий"); | |
System.out.println("Дерево до видалення вузла з одним дочірнім:"); | |
tree.printTree(); | |
System.out.println("\nВидаляємо вузол з одним дочірнім (ключ 30):"); | |
boolean removed = tree.removeNode(30); | |
System.out.println("Елемент видалено: " + removed); | |
System.out.println("\nДерево після видалення вузла з одним дочірнім:"); | |
tree.printTree(); | |
System.out.println(); | |
} | |
/** | |
* Тестування видалення вузла з двома дочірніми вузлами | |
*/ | |
private static void testRemoveTwoChildren() { | |
System.out.println("=== Тестування видалення вузла з двома дочірніми вузлами ==="); | |
BinaryTree tree = new BinaryTree(); | |
tree.addNode(50, "Корінь"); | |
tree.addNode(30, "Лівий"); | |
tree.addNode(70, "Правий"); | |
tree.addNode(20, "Лівий-лівий"); | |
tree.addNode(40, "Лівий-правий"); | |
tree.addNode(60, "Правий-лівий"); | |
tree.addNode(80, "Правий-правий"); | |
tree.addNode(65, "Правий-лівий-правий"); | |
System.out.println("Дерево до видалення вузла з двома дочірніми:"); | |
tree.printTree(); | |
System.out.println("\nВидаляємо вузол з двома дочірніми (ключ 70):"); | |
boolean removed = tree.removeNode(70); | |
System.out.println("Елемент видалено: " + removed); | |
System.out.println("\nДерево після видалення вузла з двома дочірніми:"); | |
tree.printTree(); | |
System.out.println(); | |
} | |
/** | |
* Тестування видалення неіснуючого вузла | |
*/ | |
private static void testRemoveNonExistent() { | |
System.out.println("=== Тестування видалення неіснуючого вузла ==="); | |
BinaryTree tree = new BinaryTree(); | |
tree.addNode(50, "Корінь"); | |
tree.addNode(30, "Лівий"); | |
tree.addNode(70, "Правий"); | |
System.out.println("Дерево:"); | |
tree.printTree(); | |
System.out.println("\nСпроба видалити неіснуючий вузол (ключ 100):"); | |
boolean removed = tree.removeNode(100); | |
System.out.println("Елемент видалено: " + removed); | |
System.out.println("\nДерево після спроби видалення:"); | |
tree.printTree(); | |
System.out.println("\n=== Тестування видалення з порожнього дерева ==="); | |
BinaryTree emptyTree = new BinaryTree(); | |
System.out.println("Спроба видалити вузол з порожнього дерева (ключ 10):"); | |
removed = emptyTree.removeNode(10); | |
System.out.println("Елемент видалено: " + removed); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment