Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2010, 18:57   #1
amsask
Новичок
Джуниор
 
Регистрация: 29.04.2010
Сообщений: 2
Вопрос Бинарное дерево.

Если A - корень дерева, а T1, T2 - соответственно левый и правый потомки (в общем случае - поддеревья), то инфиксная скобочная запись имеет вид (T1)A(T2).
Если вершина, не являющаяся листом, не имеет левого или правого потомка, то отсутствующее поддерево обозначается пустыми скобками "()"
Таким образом, имеется скобочная инфиксная запись бинарного дерева, например (()g(j))p((()s(o))m(d)).
Нужен алгоритм, который преобразовывает такую запись в пригодную для хранения и обработки структуру данных.
amsask вне форума Ответить с цитированием
Старый 29.04.2010, 21:25   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Строки будут короткими? Нужен алгоритм для перевода в бинарное дерево?
1) Считаем в строке S = '(()g(j))p((()s(o))m(d))' скобки ) и (, как только их количество становиться равным, то прекращаем, корень будет находится на следующей позиции. В данном случае корень это p
2) Получаем листья. Копируем строку со 2 символа до позиции корня - 2 и от позиции корня + 2 до конца строки - 1. Получим листья S1(лев) = ()g(j) и S1(прав) = (()s(o))m(d)
3) Для каждого листа повторяем п.п. 1) и 2)
Как только получаем новые листья, то добавляем в бинарное дерево (если лист не пустой)
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарное дерево) Svetlanka_ya Помощь студентам 0 17.04.2010 11:13
Бинарное дерево CFYZ-07 Помощь студентам 0 16.03.2010 23:24
Бинарное дерево С++ Olya90 Помощь студентам 1 20.10.2009 21:45
Бинарное дерево Lazio Общие вопросы C/C++ 2 10.09.2009 20:31
Бинарное дерево g0liath Помощь студентам 2 16.02.2008 23:54