2014-09-02 7 views
0

Я пытался создать это двоичное дерево поиска и определял его рекурсивную функцию get. Но независимо от того, что я делаю, он всегда возвращает None. Я просто новичок ... Так что, если это решение пошло или что-то ... Но, пожалуйста, кто-нибудь может сказать мне, почему он не возвращает никакого значения ... ???Возвращает значение none всегда

def get(self,key): 
    if self.root: 
     res = self._get(key,self.root) 
     if res: 
      return res.payload 
     else: 
      return None 
    else: 
     return None 

def _get(self,key,currentnode): 
    if not currentnode: 
     return None 
    elif currentnode.key==key: 
     return currentnode 
    elif key<currentnode.key: 
     self._get(key,currentnode.leftchild) 
    else: 
     self._get(key,currentnode.rightchild) 

Я использую Dict в каждом узле с ключом является параметром сравнения ...

ответ

1

Замените следующие строки:

elif key<currentnode.key: 
    self._get(key,currentnode.leftchild) 
else: 
    self._get(key,currentnode.rightchild) 

с:

elif key<currentnode.key: 
    return self._get(key,currentnode.leftchild) 
else: 
    return self._get(key,currentnode.rightchild) 
+0

Так ответ был слишком очевиден, работал как шарм ... thnku .. :) –