Binary tree problem (searching)

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Tue Apr 4 20:36:25 EDT 2006


pyguy at speakeasy.net a écrit :
> Hi all,
> 
> I am running into a conceptual glitch in implementing a simple binary tree class. My insertion and printing (sorting) seems to be ok, but when I search the tree, my find method isn't doing what I thought it should.
> 
> Here is the output of running my tests:
> 
> 
>>python -i trees.py
> 
> **********************************************************************
> File "trees.py", line 70, in __main__.BinaryTree.find
> Failed example:
>     t.find('Leo')
> Expected:
>     -1
> Got nothing
> **********************************************************************
> File "trees.py", line 72, in __main__.BinaryTree.find
> Failed example:
>     t.find('Cancer') 
> Expected:
>     1
> Got nothing
> **********************************************************************
> 1 items had failures:
>    2 of   7 in __main__.BinaryTree.find
> ***Test Failed*** 2 failures.
> 
>>>>                                                

(snip)

You forgot to return the result of calls to self.left.find() and 
self.right.find()

> 
>     def find(self, key, child=None):
>         """
>         >>> t=BinaryTree('Capricorn')
>         >>> t.addNode('Aquarius')    
>         >>> t.addNode('Pices')
>         >>> t.addNode('Cancer')
>         >>> t.find('Capricorn')
>         1
>         >>> t.find('Leo')
>         -1
>         >>> t.find('Cancer') 
>         1
>         """
>         if self.key == key:
>             return 1
>         elif key < self.key:
>             if self.left:
                   #self.left.find(key)
                   return self.left.find(key)
>             else:
>                 return -1
>         elif key > self.key:
>             if self.right:
                   #self.right.find(key)
                   return self.right.find(key)
>             else:
>                 return -1
> 



More information about the Python-list mailing list