adt::TreeАбстрактный тип данных “Дерево”
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
adt::Tree(tree)
adt::Tree реализует абстрактный тип данных “Дерево”.
Дерево должно быть дано как специальный список MuPAD®. Первый объект списка является корнем дерева. Все дальнейшие объекты являются листами или поддеревьями дерева. Поддерево является снова специальным (аналогичным описанному) списком, и любой другой объект MuPAD будет интерпретирован как лист дерева (см. Пример 1).
Дерево может использоваться, чтобы отобразить данные в древовидной структуре с помощью функционального output::tree (или метод "print" из дерева). Узлы и листы дерева будут распечатаны MuPAD, когда дерево будет отображено.
Дерево может также использоваться в качестве типа данных, чтобы сохранить и обработать любые данные MuPAD.
Методы всех абстрактных типов данных должны быть названы особенно и закончатся, изменяя сам объект как побочный эффект.
T := adt::Tree([_plus, 3, 4, [_mult, 5, 3], 1]) создает дерево и присваивает его переменной T.
Каждое дерево будет отображено как Tree сопровождаемый номером. Это имя сгенерировано genident.
Отобразить содержимое дерева, функционального expose или метод "print" из самого дерева должен использоваться.
Весь в соответствии с методами изменяет значение T самостоятельно. Новое присвоение на переменную (в этом примере T) не необходимо, в отличие от всех других функций MuPAD и типов данных.
Методы nopsop expr)печать, indent, chars теперь доступны для обработки с деревьями.
Создание простого дерева только с двумя листами. Чтобы получить доступ и отобразить дерево, это должно быть присвоено переменной:
T := adt::Tree(["ROOT", "LEFT", "RIGHT"])
![]()
Дерево будет только распечатано его именем. Отобразить дерево, функциональный expose или метод "print" из дерева должен использоваться:
T::print()
ROOT | +-- LEFT | `-- RIGHT
expose(T)
ROOT | +-- LEFT | `-- RIGHT
Следующее дерево содержит два поддерева как листы:
T := adt::Tree(["ROOT", ["LROOT", "LLEFT", "LRIGHT"],
["RROOT", "RLEFT", "RRIGHT"]]):
T::print()
ROOT
|
+-- LROOT
| |
| +-- LLEFT
| |
| `-- LRIGHT
|
`-- RROOT
|
+-- RLEFT
|
`-- RRIGHT
Получите операнды дерева: Также поддерево может быть операндом:
T := adt::Tree(["ROOT", ["LROOT", "LLEFT", "LRIGHT"],
"MIDDLE",
["RROOT", "RLEFT", "RRIGHT"]]):
T::op()![]()
Используйте expose отобразить поддеревья:
map(%, expose)
LROOT RROOT | | +-- LLEFT , "MIDDLE", +-- RLEFT | | `-- LRIGHT `-- RRIGHT
Получите все операнды включая корень:
T::op(0..T::nops())
![]()
Доступ к различным операндам:
T::op(0); T::op(2..3); T::op([1, 2])
![]()
![]()
![]()
Символами по умолчанию является ["|", "+", "-", „", " "]:
T := adt::Tree(["ROOT", ["LROOT", "LLEFT", "LRIGHT"],
["RROOT", "RLEFT", "RRIGHT"]]):
T::print()
ROOT
|
+-- LROOT
| |
| +-- LLEFT
| |
| `-- LRIGHT
|
`-- RROOT
|
+-- RLEFT
|
`-- RRIGHT
Символы могут быть изменены:
T::chars(["|", "|", "_", "|", " "]): T::print()
ROOT
|
|__ LROOT
| |
| |__ LLEFT
| |
| |__ LRIGHT
|
|__ RROOT
|
|__ RLEFT
|
|__ RRIGHT
Дерево визуализирует структуру выражения:
T:= adt::Tree([_plus, [_power, [sin, x], 2], [_power, [cos, x], 2]]): T::print()
_plus
|
+-- _power
| |
| +-- sin
| | |
| | `-- x
| |
| `-- 2
|
`-- _power
|
+-- cos
| |
| `-- x
|
`-- 2
Дерево может быть преобразовано в выражение MuPAD:
T::expr(), simplify(T::expr())
![]()
|
Дерево, данное как специальный список (см. детали), |