我想寫,通過將我的二叉樹類計算二叉樹的葉數的函數的數量:的Python:遞歸:查找二叉樹的葉子
這是我的二叉樹類:
class BinaryTree:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def insert_left(self, new_data):
if self.left == None:
self.left = BinaryTree(new_data)
else:
t = BinaryTree(new_data)
t.left = self.left
self.left = t
def insert_right(self, new_data):
if self.right == None:
self.right = BinaryTree(new_data)
else:
t = BinaryTree(new_data)
t.right = self.right
self.right = t
def get_left(self):
return self.left
def get_right(self):
return self.right
def set_data(self, data):
self.data = data
def get_data(self):
return self.data
而這個函數我寫道:此刻它不輸出正確的值。我覺得有什麼錯我的遞歸,但我無法弄清楚:
def num_leaves(my_tree):
count = 0
if my_tree.get_left() and my_tree.get_right() is None:
count += 1
if my_tree.get_left():
num_leaves(my_tree.get_left())
if my_tree.get_right():
num_leaves(my_tree.get_right())
return count
輸入和輸出的一個例子是:
a = BinaryTree(1)
a.insert_left(2)
a.insert_right(3)
print(num_leaves(a))
輸出:
0
代替2.
我的功能背後的想法是,它重複出現,直到它找到一個節點,其中的左和右s ubtree是None,那麼它會添加一個數字。這樣它找到每一片葉子。
我在做什麼錯?
您需要了解如何使用調試器。使用它,你可以跨過'num_leaves()'的代碼並檢查'count'的值來找出它與你的期望不同的地方。使用它,你的問題就變得微不足道了。 –