|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Алгоритмы обхода дереваСуществуют три алгоритма обхода деревьев, которые естественно следуют из самой структуры дерева. 1. Обход слева направо: Left-Root-Right (сначала посещаем левое поддерево, затем – корень и, наконец, правое поддерево). 2. Обход сверху вниз: Root-Left-Right (посещаем корень до поддеревьев). 3. Обход снизу вверх: Left-Right-Root (посещаем корень после поддеревьев). Интересно проследить результаты этих трех обходов на примере записи формулы в виде дерева, так как они и позволяют получить различные формы записи арифметических выражений. Пусть для операндов А и В выполняется операция сложения. Привычная форма записи в виде А + В называется инфиксной. Форма записи, в которой знак операции следует перед операндами + АВ, называется префиксной, если же операция записывается после операндов АВ + – постфиксной. Рассмотрим небольшой пример, пусть задано выражение А + В * С. Так как умножение имеет более высокий приоритет, то данное выражение можно переписать в виде А +(В * С). Для записи выражения в постфиксной форме сначала преобразуем ту часть выражения, которая вычисляется первой, в результате получим: А +(ВС *). Теперь запишем в постфиксной форме операцию сложения между операндами А и (ВС *): АВС *+. Таким образом, выражение А + В * С в постфиксном виде АВС *+, префиксная форма записи будет иметь вид +* АВС. Рассмотрим различные обходы дерева на примере формулы: ((a + b / c)*(d – e * f)). Дерево формируется по принципу: – в корне размещаем операцию, которая выполнится последней; – далее узлы-операции, операнды – листья дерева. Обход 1 (Left-Root-Right) дает обычную инфиксную запись выражения (без скобок): a + b / c * d – e * f. Обход 2 (Root-Left-Right) – префиксную запись выражения (без скобок): * + a / b c – d * e f. Обход 3 (Left-Right-Root) – постфиксную запись выражения: a b c / + d e f * – *. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |