ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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);
}
}
}
Результат:
Вывод: научился разрабатывать сценарий развития объекта, выделять варианты его конструктивного исполнения, на основе которых строить и программно реализовывать И-ИЛИ дерево технических решений.