2014-12-11 4 views
0

Я только что представил себя для двоичных и двоичных деревьев в Python, но у меня возникли проблемы, когда я попытался реализовать метод максимальной глубины. Кажется, он не дает мне правильного ответа, он дает мне 1, тогда как число должно быть намного больше или, может быть, я полностью что-то недопонимаю. Я добавил часть моего кода нижеPython: максимальная глубина в двоичном дереве

class Node: 
def __init__(self, value, left=None, right=None): 
    self.left = left 
    self.right = right 
    self.value = value 
    self.count = 1 

    def depth(self): 
     if self.left: 
      left_depth = self.left.depth() 
     else: 
      left_depth = 0 
     right_depth = self.right.depth() if self.right else 0 

     print(max(left_depth, right_depth) + 1) 



tree = createTree(words) # list of words 
tree.depth() 
+7

'print' не' return'. – user2357112

+0

как @ user2357112 сказал выше, вы должны «вернуть» значение, а не 'print'. –

ответ

2
 print(max(left_depth, right_depth) + 1) 

должно быть ...

 return max(left_depth, right_depth) + 1 

так, что ваш метод .depth() фактически возвращает значение при вызове.

Затем, в конце концов, когда вы на самом деле хотите результат:

print(tree.depth()) 

Кроме того, это немного странно, что вы используете два разных if-другой конструкции.

 left_depth = self.left.depth() if self.left else 0 
     right_depth = self.right.depth() if self.right else 0 

будет работать просто отлично и быть более кратким.

Смежные вопросы