![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 29.04.2010
Сообщений: 2
|
![]()
Если A - корень дерева, а T1, T2 - соответственно левый и правый потомки (в общем случае - поддеревья), то инфиксная скобочная запись имеет вид (T1)A(T2).
Если вершина, не являющаяся листом, не имеет левого или правого потомка, то отсутствующее поддерево обозначается пустыми скобками "()" Таким образом, имеется скобочная инфиксная запись бинарного дерева, например (()g(j))p((()s(o))m(d)). Нужен алгоритм, который преобразовывает такую запись в пригодную для хранения и обработки структуру данных. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 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) Как только получаем новые листья, то добавляем в бинарное дерево (если лист не пустой) |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бинарное дерево) | 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 |