Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 06.12.2015
Сообщений: 29

Поиск элементов бинарного дерева

22.02.2017, 09:24. Показов 5135. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, нужна помощь. Дана простая реализация бинарного дерева в виде класса Tree. В классе реализован метод добавления элементов к дереву. Задача – реализовать еще два метода: 
метод find(value). В качестве аргумента метод принимает значение (число). Метод должен возвращать True, если элемент найден в дереве или False, если такой элемент отсутствует. 
метод print(). Этот метод не принимает никаких аргументов. Результат работы метода – вывод структуры дерева (значений его элементов и иерархии) на экран (вывод может иметь любой осмысленный вид, но запрещается выводить все элементы в одну строку).
Плюсом будет имплементация специального метода для возможности использовать с инстансом класса Tree конструкцию вида:
root = Tree(10)
if 10 in root:
...

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
class Tree: 
 
    def __init__(self, value, root=None):
        # left and right child nodes
        self.lchild = None
        self.rchild = None 
        # node value
        self.value = value
        # parent element for current node
        self.root = root 
 
    def add(self, value):
        # track current node (level)
        current_node = self 
        # track parent node
        last_node = None
        # search the place to insert new node
        while current_node:
            last_node = current_node 
 
            if value > current_node.value: 
               current_node = current_node.rchild
            elif value < current_node.value:
                 current_node = current_node.lchild
            else: # element already presented in tree
                return False 
 # create new node and link it with parent
        new_node = Tree(value, last_node)
        if value > last_node.value:
           last_node.rchild = new_node
        else:
            last_node.lchild = new_node
        return True 
#    /* функция для проверки наличия узла */
    def lookup(self, node, target):
        if node == None:return 0
        else:
            if target == node.data: return 1
            else:
                if target < node.data: return self.lookup(node.left, target)
                else: return self.lookup(node.right, target)
Пример работы класса:
>> root = Tree(10)
>> root.add(9)
>> root.add(8)
>> root.add(11)
>> root.add(15)
>> root.add(16)
>> root.add(12)
>> root.add(2)

‘‘‘ Поиск элемента ‘‘‘
>> root.find(11)
True
>> root.find(5)
False

‘‘‘ Вывод элементов дерева ‘‘‘
>> root.print() 10
9 11
8 15
2 12 16
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2017, 09:24
Ответы с готовыми решениями:

Определение высоты каждой пары элементов данного бинарного дерева
определения высоты каждой пары элементов данного бинарного дерева

Реализация бинарного дерева поиска
Реализуйте бинарное дерево поиска. А также методы добавления в него определенного значения, и поворота дерева влево и вправо.

Алгоритм обхода бинарного дерева
Помогите, пожалуйста, составить алгоритм. Есть список (list), который описывает бинарное дерево (пример прикреплён ниже). Сам список...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2017, 09:24
Помогаю со студенческими работами здесь

Ошибка при выводе бинарного дерева
Я еще новичок в питоне. Пытался написать бинарное дерево. Просто через функции все получилось, а вот когда переписал в класс, перестало...

Печать на консоль бинарного дерева, обход в ширину
Добрый вечер! Сразу скажу, топик не для слабонерных. Выручайте уважаемые программисты. Встала задача передо мной написать печать на КОНСОЛЬ...

Как реализовать метод clear() для бинарного дерева
Если мне нужно очистить все дерево то приходиться перебирать и удалять каждый элемент вручную: ...

Есть класс бинарного дерева, нужно создать графическую реализацию
У меня есть класс бинарного дерева, но мне нужно сдать с графической реализацией самой банальной типа чтобы были кружоки с значениями с...

Поиск суммы нечетных элементов бинарного дерева
Пытаюсь написать программу поиска суммы нечетных элементов бинарного дерева. Получается как то не очень. Функция odd_sum выводит только...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru