Работа с деревьями выражений в Java, Рисование бинарного дерева - PullRequest
0 голосов
/ 24 сентября 2019

Первая часть - добавить код в класс двоичного дерева BinaryTree.java, чтобы нарисовать двоичное дерево.Метод getDrawSize() и методы draw(Graphics g) должны быть реализованы, а класс InorderIterator должен быть изменен.Класс BinaryTreeNode (внутренний класс BinaryTree) имеет поля для координат x и y каждого узла.Параметры рисования и координаты назначаются следующим образом:

· Поле диаметра - это диаметр овалов, которые рисуются для каждого узла.

· Размер шрифта для рисования имени (числа) каждого узла также должен быть диаметром.

· Координата x - порядковый номер порядка узла, умноженный на коэффициент (например, 2 * диаметр работает нормально).

· Yкоордината - это глубина узла, умноженная на коэффициент (например, 4 * диаметр работает нормально).

Нарисуйте заполненные овалы в координатах (x, y) каждого узла.Линии от узла к каждому из его дочерних элементов также должны быть нарисованы.Один из способов сделать это - выполнить итерацию дерева по порядку, чтобы вычислить значения x и / или y для каждого узла, а затем выполнить другую итерацию (возможно, итерацию по предварительному заказу) и нарисовать овалы и линии для дочерних элементов.Линии также должны быть нарисованы для нулевых детей.Вы можете использовать BinaryTreeExample.java для проверки этой части задания.

      For the second part of the assignment, you are to create an `ExpressionTree` class. The Expression Tree class extends the `BinaryTree` class.  See ExpressionTree.java for a guide. The class has a static method to construct an expression tree (see page 380-395 in the text) from an algebraic expression. The operators are the binary operators +, -, *, / and ^ (exponentiation) and the parenthesis operators, ( and ). The operands are non-negative integers and variables made up of single letters only. Methods to return the fully parenthesized infix notation of the expression, the prefix notation of the expression , the postfix notation of the expression and sample intermediate code of the expression as Strings are to be included in the ExpresstionTree class. The intermediate code statements are:

Push-операнд {Push-операнд в стеке}

Add {Вставить стек влево, открыть стеквправо и нажмите влево + вправо}

Sub {Вставьте стопку влево, вставьте стопку вправо и нажмите влево - вправо}

Mul {Вставьте стопку влево, вставьте стопкувправо и нажмите влево * вправо}

Div {Вставьте стопку влево, вставьте стопку вправо и нажмите влево / вправо}

Pow {Вставьте стопку влево, вставьте стопкувправо и нажмите влево ^ right}

Вывод результата {Вставка стека в результат}

Операндами может быть переменная из одной буквы или целое число.

Алгебраическое выражение дляАлгоритм дерева выражений будет обсуждаться в классе.Если в выражении есть ошибки, выведите исключение.

Используйте TestExpressionTree.java для проверки ваших реализаций.

Ваш вывод должен быть похож на: введите описание изображения здесь

Ребята, вот что я получил

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...