Cтраница 2
Прямая польская запись простого выражения получается последовательным выписыванием пометок вершин во время их посещения при прямом обходе дерева этого выражения. Обратная польская запись простого выражения получается последовательным выписыванием пометок вершин во время их посещения при обратном обходе дерева этого выражения. [16]
![]() |
Использование итератора для косвенной связи со списком. [17] |
Агрегат может определять несколько методов для передачи элементов контролирующему объекту. Так класс дерева обеспечивает методы Visit Pre order ( Прямой обход), Visit Post order ( Обратный обход), Visit Inorder ( Симметричный обход) iiVisitBreadthFirst ( Обход в глубину), чтобы контролирующие объекты обходили элементы в различном порядке. [18]
В программах трансляции, подобных компиляторам, часто используются такие внутренние представления программ в виде деревьев, поскольку деревья удобны для достижения многих целей. Например, можно представить операнд, соответствующие переменным, принимающим значения, и сгенерировать машинный код для оценки выражения, представленного в виде дерева с обратным обходом. [19]
Эта рекурсивная функция принимает в качестве аргумента ссылку на дерево и вызывает функцию visit для каждого из узлов дерева. В приведенном виде функция реализует прямой обход; если поместить обращение к visit между рекурсивными вызовами, получится поперечный обход; а если поместить обращение к visit после рекурсивных вызовов - то обратный обход. [20]
Программа Travl демонстрирует прямой, симметричный и обратный порядок обхода и обход в ширину для полных двоичных деревьев. Затем нажмите кнопку Preorder ( Прямой о & ход), Inorder ( Симметричный обход), Postorder ( Обратный обход) или Breadth First ( Обход в ширину), чтобы увидеть, как происходит обход. [21]
Нажатие кнопки Remove удаляет узел и всех его потомков. На рис. 6.14 показано окно программы Travl, где отображается обратный обход. [22]