0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 12
|
|
1 | |
Работа с деревьями (Найти все поддеревья, листья которых находятся в заданном диапазоне высот от корня поддерева)22.03.2013, 15:58. Показов 3726. Ответов 7
Метки нет (Все метки)
Есть задача:
Дано N-дерево. Найти все поддеревья, листья которых находятся в заданном диапазоне высот от корня поддерева. Дайте советы по алгоритму решения, допустим прохожу дерево, нахожу лист, который в заданном диапозоне, как дальше вывести все поддеревья с этим листом, имея, например, сейчас только указатель на этот лист?Можно ли все это сделать за один обход дерева? Или как сократить количество обходов? Помогите советом Добавлено через 18 часов 54 минуты Никакого совета не может дать?
0
|
22.03.2013, 15:58 | |
Ответы с готовыми решениями:
7
Выбор всех элементов массива, значения которых находятся в заданном диапазоне Напечатать номера элементов одномерного массива, значения которых находятся в заданном диапазоне. Найти все числа в заданном диапазоне, сумма цифр которых нечётная и больше пяти Определите все простые числа, значения которых находятся в диапазоне от M до N |
90 / 90 / 17
Регистрация: 26.10.2012
Сообщений: 249
|
|
22.03.2013, 16:05 | 2 |
Попробую проиллюстрировать. Вот дерево. У него есть поддеревья. На концах поддеревьев есть листья.
Зеленым выделил искомые поддеревья. Должно быть так?
0
|
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 12
|
|
22.03.2013, 16:19 [ТС] | 3 |
Возможно я не знаю правильного определения поддерева и листа, но, например, поддерево корня, имеет лист в диапозоне, опускаемся ниже, тоже поддерево и оно тоже может иметь лист в диапозоне. Или я не правильно мыслил с самого начала?
0
|
90 / 90 / 17
Регистрация: 26.10.2012
Сообщений: 249
|
|
22.03.2013, 16:25 | 4 |
Вы сначала чётко сформулируйте задачу, а уж потом спрашивайте советов. Мы не телепаты.
0
|
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 12
|
|
22.03.2013, 16:38 [ТС] | 5 |
Задача четко сформулирована в первом посте, я так же как и вы пытаюсь понять ее условие. Если смотреть во вашему рисунку, но алгоритм примерно такой? проходим дерево до уровня Нижняя граница -1 и проверяем условие не являются ли какой из сыновей узла листом?Только еще вопрос, как обознать поддерево с си? Нужно найти узел, сын которого лист, но тогда будут другие ветви или нужно найти ветвь, как вы указали на рисунке, то я не знаю как это обозначить, указатель на узел и указатель на сына-листа?
0
|
90 / 90 / 17
Регистрация: 26.10.2012
Сообщений: 249
|
|
22.03.2013, 16:47 | 6 |
Ладно, попробуем так.
Есть класс Tree. Объект класса Tree содержит переменную Name типа char, указатель на массив объектов Subtrees класса Tree и указатель на массив объектов Leafs класса Leaf. Объект класса Leaf содержит переменную Height типа int. Класс Tree содержит методы, которые перебирают элементы массивов Subtrees и Leafs. Когда значение Height объекта класса Leaf будет соответствовать условиям, вывести имя объекта класса Tree, содержащий этот лист. Алсо, чтобы задача имела практическое значение, нужны методы, с помощью которых можно перемещаться по деревьям и создавать/удалять/изменять деревья/листья
1
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
24.03.2013, 07:22 | 7 | |||||
Вообще-то расстояние от корня дерева называется уровнем.
0
|
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
|
|
24.03.2013, 08:42 | 8 |
вам нужен массив степеней вершин. dfs-ом найдете расстояние от корня, и если оно удовлетворяет, и вершина является листом, - поддерево, содержащее ее, входит в ответ.
0
|
24.03.2013, 08:42 | |
24.03.2013, 08:42 | |
Помогаю со студенческими работами здесь
8
Удалить из массива все элементы значения которых находятся в заданном промежутке Вывести все несокращаемые дроби, которые находятся в диапазоне от 0 до 1, знаменатель которых не превышают заданное число Найти сумму элементов матрицы, значения которых находятся в заданном пределе Максимальная высота полного поддерева опирающегося на листья в дереве Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |