Скачиваний:
2
Добавлен:
30.06.2018
Размер:
27.09 Кб
Скачать

Лабораторна робота 2. Робота з структурами даних типу «дерево»

Студента ИТ 14-1 Красовського Абхая

Вариант №11

Мета роботи: навчитися розробляти та використовувати динамічні структури даних, що мають вигляд дерева.

Ход работы

Індивідуальне завдання

Динамічна структура даних для всіх варіантів – бінарне дерево. Функції обробки динамічної структури даних взяти з індивідуального завдання до лабораторної роботи №1 (таблиця 1).

Листинг программы:

public class TreeElement {

int data;

TreeElement left;

TreeElement right;

}

public class Main {

public static void main(String argv[]) {

int a[] = { 20, 10, 8, 12, 30, 25, 34, 22 };

TreeElement treeElement = new TreeElement();

first(treeElement, a[0]); /*формирование первого узла дерева */

for (int i = 1; i < 8; i++)

addElement (treeElement, a[i]); /* добавление узлов дерева */

System.out.println("Tree: ");

printTree (treeElement); /* вывод элементов дерева на экран */

System.out.println();

System.out.println("Tree 2: ");

printTreeLevel(treeElement, 0); /* вывод элементов дерева на экран по уровням */

treeElement = null; /* Удаление дерева производится так потому, что в java

нет ручного освобождения пямяти */

System.out.println();

System.out.println("Tree 3: ");

printTree(treeElement);

}

/* формирование первого узла дерева */

public static void first(TreeElement tempElement, int data) {

tempElement.data = data;

tempElement.left = tempElement.right = null;

}

/* поиск места для нового узла возвращаем адрес узла,

после которого нужно добавить новый элемент */

public static TreeElement search(TreeElement tempElement, int data) {

TreeElement pv = tempElement, ppv = pv;

while (pv != null) {

ppv = pv;

if (data < pv.data)

pv = pv.left;

else pv = pv.right;

}

return ppv;

}

public static void addElement(TreeElement tempElement, int data) {

TreeElement ppv, newElement = new TreeElement();

newElement.data = data;

newElement.left = null;

newElement.right = null;

ppv = search(tempElement, data); /* поиск места для нового узла */

if (data < ppv.data)

ppv.left = newElement; /* присоединение к левому поддереву предка */

else

ppv.right = newElement; /* присоединение к правому поддереву предка */

}

/* обход дерева и вывод значений в отсортированном порядке */

public static void printTree(TreeElement tempElement) {

if (tempElement != null) {

printTree(tempElement.left); /* обход левого поддерева */

System.out.print(tempElement.data + " ");

printTree(tempElement.right); /* обход правого поддерева */

}

}

public static void printTreeLevel(TreeElement tempElement, int level) {

if (tempElement != null) {

printTreeLevel(tempElement.left, level + 1);

for (int i = 0; i < level; i++) System.out.print(" ");

System.out.print(tempElement.data + " ");

printTreeLevel(tempElement.right, level + 1);

}

}

}

Соседние файлы в предмете Системный анализ и проектирование информационных систем