2010-02-05 1 views
0

Я изо всех сил пытаюсь понять, как закодировать базовую реализацию, используя словарь и дерево двоичного поиска в обратном порядке в Python. Класс должен использовать нижнюю структуру.Python Dictionary Дерево двоичного поиска

Я был бы очень рад, если бы кто-то заполнил пробелы (проходы) в каждой функции, чтобы начать меня.

class Dictionary: 

    def __init__ (self): 

     pass 

    def insert (self, key, value): 

     pass 

    def delete (self, key): 

     pass 

    def find (self, key): 

     pass 

    def traverse (self, f): 

     pass 

    def __str__ (self): 

     return str(self) 
+1

Я не понял, что вы пытаетесь сделать здесь. Вы пытаетесь реализовать свой собственный словарь? Это просто академическое упражнение? Я спрашиваю, потому что у python уже есть отличная реализация Словаря, встроенная в сам язык. –

+2

Мне нравится домашнее задание; как и вы другой вопрос. Если это домашняя работа так говорит, и мы можем указать вам в сторону хорошего учебника, а не сообщать вам, что нет смысла создавать собственные версии встроенных функций. –

+2

Существует определенно смысл иметь структуру данных двоичного дерева в Python, и это одна из недостающих частей Python, но это определенно домашнее задание. Никто, кто не знает, как реализовать двоичное дерево, указывает API как это, не говоря уже о том, что он * имеет * для использования этого API. –

ответ

-2
class Dictionary: 
    def __init__ (self): 
     self.data = {} 
    def insert (self, key, value): 
     self.data[key] = value 
    def delete (self, key): 
     if key in self.data: 
      del self.data[key] 
    def find (self, key): 
     if key in self.data: 
      return self.data[key] 
     return None 
    def traverse (self, f): 
     for key,value in self.data: 
      f(key,value) 
    def __str__ (self): 
     return str(self) 
+2

Включены тонкие ошибки – Will

+2

Бесконечная рекурсия в '__str__', отсутствует' .items() 'in' traverse'. – AndiDog

+0

Не является бинарным деревом; обход не «в порядке» (ОП не сказал, какой заказ он имел в виду, но предположительно отсортировал порядок, так как это то, что вам дают бинарные деревья). Если вы не хотите отвечать на домашнюю работу, я с вами, но не даю преднамеренно фиктивных ответов. Словари Python не являются бинарными деревьями. –

0

бинарное дерево

Вы можете использовать the array representation of a binary tree. Python имеет мощный list data type, который сделает большую часть работы тривиальной. :)

class BinaryTree(): 
    def __init__(self): 
    self.nodes = [] 

Здесь вы можете начать создание.

+0

Я имею в виду, вы хотите реализовать двоичное дерево, не так ли? <. < – badp

+0

Да, я хочу реализовать класс словаря, используя двоичное дерево поиска. –