43 / 7 / 0
Регистрация: 27.11.2013
Сообщений: 96

Классы и дерево

12.10.2014, 12:54. Показов 7445. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Начал изучать классы, вот тут дерево есть, оцените плиз

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Node:
    # Это класс узла.
    def __init__(self, data=u''):
        self.parent = None
        self.children = []
        self.data = data
        
    def add_node(self, data=u''):
        childNode = Node(data)
        childNode.parent = self
        self.children.append(childNode)
        return childNode
 
    def delete_from_tree(self, tree):
        for i in tree.nodes:
            if tree.nodes[i] == self:
                tree.nodes[i] = None
                break
        for child in self.children:
            child.delete_from_tree(tree)
        if self.parent != None:
            self.parent.children.remove(self)
            self.parent = None
        if tree.root == self:
            tree.root = None
 
 
class Tree:
    def __init__(self, rootData=u''):
        self.root = Node(rootData)
        self.nodes = {0: self.root}
        self.lastId = 0
 
    def add_node(self, index, data):
        childNode = self.nodes[index].add_node(data)
        self.lastId += 1
        self.nodes[self.lastId] = childNode
 
    def search(self, data, startNode=None):
        if startNode == None:
            startNode = self.root
        result = []
        if startNode.data == data:
            result.append(startNode)
            
        for i in startNode.children:
            result += self.search(data, i)
        return result
Всё, кажется, понятным, но есть три вопроса, хотелось бы и в них разобраться

1. Как сделать функцию, которая для данного узла возвращает путь от него до корня
2. Как сделать функцию, которая для двух данных узлов возвращает кратчайший (т. е. без повторяющихся узлов) путь от одного узла дерева до другого
3. Как сделать функцию, которая для данного узла возвращает массив всех листьев, достижимых из него

Буду благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2014, 12:54
Ответы с готовыми решениями:

с++ дерево классы
Написал дерево, но при добавлении нового элемента(add) происходит косяк #ifndef TREEITEM_H #define TREEITEM_H #pragma once ...

Бинарное дерево, классы
Помогите! Мне нужно описать класс, реализующий бинарное дерево, обладающее возможностью добавление новых элементов, удаления существующих,...

Дерево, классы и QAbstractItemModel
Доброго времени. Есть xml файл с вот такой структурой: Корень --Тэг1 ----Тэг2 ------Тэг5 ------Тэг5... ----Тэг3 ...

2
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
18.10.2014, 00:00
Adastraz,
1) обход в глубину
(2) - (3) - обход в ширину.
0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
19.10.2014, 16:47
Цитата Сообщение от Adastraz Посмотреть сообщение
Всем привет.
Начал изучать классы, вот тут дерево есть, оцените плиз
1. Зачем разделять классы Node и Tree.... Разве поддерево деревом не является!?
2. Множество чилдренов лучше задавать как set, а не list
3. add_node и delete_node лучше реализовать с помощью операторов + - | ^ & ( вообщем операторы практически те же что и для set'а)

1. Как сделать функцию, которая для данного узла возвращает путь от него до корня
Python
1
2
3
4
5
def way_to_first_node(self):
  parent = self.parent
  while parent <> None: 
    yield parent
    parent = parent.parent
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2014, 16:47
Помогаю со студенческими работами здесь

Дерево, компьютерные классы
Как сделать чтобы выводились только аудитории и факультеты у которых одинаковые аудитории? Задача: В некотором институте ...

Бинарное дерево поиска реализованное через классы
Здравствуйте. Нужно создать класс бинарное древо поиска. Пользователь вводит первое число N - количество звеньев в дереве. Потом N...

Классы, бинарное дерево, конструкторы. Исправить код
Здравствуйте! Не знаю, как исправить последнюю возникшую ошибку и заставить программу работать. А уже скоро сдавать и преподавателя...

Бинарное дерево поиска реализованное через классы
Здравствуйте. Нужно создать класс- бинарное древо поиска. Пользователь вводит первое число N - количество звеньев в дереве. Потом N...

Создать базовый класс «Садовое дерево» и производные классы «Яблоня», «Вишня», «Груша» и др
7. Создать базовый класс «Садовое дерево» и производные классы «Яблоня», «Вишня», «Груша» и др. С помощью конструктора автоматически...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru