class Node:
def __init__(self, item, left = None, right = None):
self.item = item
self.left = left
self.right = right
class BST:
def __init__(self):
self.root = None
def recurse_add(self, ptr, item):
if ptr == None:
return Node(item)
elif item < ptr.item:
ptr.left = self.recurse_add(ptr.left, item)
elif item > ptr.item:
ptr.right = self.recurse_add(ptr.right, item)
return ptr
Вот моя попытка:Как подсчитать листья двоичного дерева?
def count_leaves(self):
ptr = self.root
counter = 0
if ptr.left is None and ptr.right is None:
counter += 1
if ptr.left:
counter += self.count_leaves()
if ptr.right:
counter += self.count_leaves()
return counter
Я получил RecursionError
, есть в любом случае, что я мог бы это исправить Может кто-нибудь объяснить мне, как я буду считать листья бинарного дерева?
Либо поднимите предел рекурсии ('sys.setrecursionlimit'), либо не используйте рекурсию. –
Как вы получили эту ошибку? Мы не можем видеть ваше дерево или где вы вызываете функцию. –
Я не уверен, что ваш класс 'BST' имеет смысл наследовать от' Node'. Дерево * HAS-A * корневой узел, но вы бы никогда не сказали дерево * IS-A *. – Blckknght