ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.06.2019

Просмотров: 126

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Студента ИТ14-1 Красовского А.В.


Лабораторная работа №3

Построение и программная реализация И-ИЛИ дерева решений


Цель работы: научиться разрабатывать сценарий развития объекта, выделять варианты его конструктивного исполнения, на основе которых строить и программно реализовывать И-ИЛИ дерево технических решений.


Код:

public class TreeElement {

double data;

TreeElement left;

TreeElement right;

}



public class Main {


public static void main(String argv[]) {

double a[] = { 1, 0.4, 0.6, 0.2, 0.2, 0.3, 0.3, 0.1, 0.1 };

TreeElement treeElement = new TreeElement();

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

for (int i = 1; i < a.length; 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, double data) {

tempElement.data = data;

tempElement.left = tempElement.right = null;

}


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

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

public static TreeElement search(TreeElement tempElement, double 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, double 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);

}

}

}


Результат:


Вывод: научился разрабатывать сценарий развития объекта, выделять варианты его конструктивного исполнения, на основе которых строить и программно реализовывать И-ИЛИ дерево технических решений.



Смотрите также файлы