Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обход бинарного дерева, Как это реализовать? 
:(
    Опции темы
t77
  Дата 19.3.2012, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Доброе время суток!

Вопрос собственно в том, как на javascript реализовать обход бинарного дерева ?
Проходим по нодам дерева и печатаем текст каждого нода...

Какие варианты имеются (рекурсия, ООП и т. д.) ?
Возможные решения?

Спасибо.

PM MAIL   Вверх
Stolzen
Дата 19.3.2012, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 4
Всего: 48



Рекурсия - самый простой способ. Сколько элементов в дереве? Как граф представлен?
Если элементов много, то лучше самому реализовать стек (про размер стека в разных браузерах можно почитать тут).


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
t77
  Дата 21.3.2012, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Элементов в дереве может быть много, заранее не известно!
Граф представлен следующим образом:
Рут(корневой элемент) дерева "А"
Его дети: "B", "С", "D
Дети элемента "B": "Е", "F", "G"
Дети элемента "C": "H", "I", "K"
Дети элемента "D": "L", "M", "N"
У каждого из детей тоже имеются дети!
Ну и так далее...
В принципе не важно сколько детей будет у каждого элемента и какого размера будет дерево. 
Важно пройтись по каждому элементу дерева и распечатать текст(название).
PM MAIL   Вверх
Stolzen
Дата 22.3.2012, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 4
Всего: 48



Примерно алгоритм должен быть такой (псевдокод):
Код

function printNode(node) {
    printText(node.getText());
    foreach (child in node.getChildren()) {
        printNode(child);
    }
}


П.С. Вы не ответили на вопрос про представление дерева, вы только показали, что, какие данные в нем. Какая структура данных используется для хранения графа? И это не бинарное дерево

Это сообщение отредактировал(а) Stolzen - 22.3.2012, 08:50


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
t77
  Дата 24.3.2012, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 27.7.2008

Репутация: нет
Всего: нет



Stolzen , это один из вопросов, которые недавно слышал на собеседовании...
Поэтому не представлена структура для хранения графа. А представление дерева было просто нарисовано на листке бумаги, в виде кружочков, соединенными между собой.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.