2010-02-05 10 views
0

파이썬에서 사전 및 순차적 인 바이너리 검색 트리를 사용하여 기본 구현을 코딩하는 방법을 알기 위해 고심하고 있습니다. 클래스는 아래 구조를 사용해야합니다.파이썬 사전 바이너리 검색 트리

누군가 나를 시작할 수 있도록 각 기능에서 공란을 작성하면 매우 행복 할 것입니다.

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

여기서 무엇을하려하는지 이해하지 못했습니다. 자신 만의 사전 수업을 구현하려고합니까? 이것은 단순히 학술적인 훈련입니까? 파이썬에는 이미 언어 자체에 내장 된 훌륭한 사전 구현이 있기 때문에 묻습니다. –

+2

그것은 내게 숙제 냄새가납니다. 너처럼 다른 질문이야. 그것이 숙제라고한다면, 우리는 당신에게 자신 만의 기능을 내장 한 버전을 만드는 것이 아무 의미가 없다는 것을 말하기보다는, 훌륭한 튜토리얼의 방향으로 당신을 가리킬 수 있습니다. –

+2

파이썬에서 바이너리 트리 데이터 구조를 갖는 것이 분명하고 파이썬의 누락 된 부분 중 하나입니다. 그러나 이것은 숙제입니다. 바이너리 트리를 구현하는 법을 모르는 사람은 이처럼 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__'에서 무한 재귀,'traverse'에서'.items()'가 누락되었습니다. – AndiDog

+0

이진 트리가 아닙니다. 순회는 "순서대로"(OP는 그가 의미하는 순서를 말하지 않았지만 아마도 정렬 된 순서라고 말합니다. 이진 나무가 여러분에게주는 것입니다). 숙제에 대답하고 싶지 않다면, 나는 너와 함께 있지만 의도적으로 가짜 답변을하지 말라. 파이썬의 사전은 바이너리 트리가 아닙니다. –

0

이진 트리

당신은 the array representation of a binary tree를 사용할 수 있습니다. 파이썬은 대부분의 작업을 쉽게 할 수있는 강력한 list data type을 가지고 있습니다. :) 여기

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

, 그건 당신이에서 시작할 수있는 토대입니다.

+0

내 말은, 당신은 바이너리 트리를 구현하고 싶습니까? <. < – badp

+0

예, 이진 검색 트리를 사용하여 사전 클래스를 구현하고 싶습니다. –