Skip to content

Instantly share code, notes, and snippets.

@untainsYD
Created May 15, 2025 07:39
Show Gist options
  • Save untainsYD/f7491dfe604eb6c9baee8230485e5c88 to your computer and use it in GitHub Desktop.
Save untainsYD/f7491dfe604eb6c9baee8230485e5c88 to your computer and use it in GitHub Desktop.
BinaryTreeTestClass
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