我的任務是構建一個函數,它返回給定二叉樹中「叔叔」的數目。只有當他的兄弟(他父親的第二個孩子)有孩子。 這是我的代碼: 「在二叉樹中找到「叔叔」 - Python
def uncle(root,count = None):
if count is None:
count = [0]
a,b = 0,0
if root.left:
if root.left.left or root.left.right:
a = uncle(root.left)
a = 1
if root.right:
if root.right.right or root.right.left:
b = uncle(root.right)
b = 1
if b > 0:
count[0] += 1
if a > 0:
count[0] += 1
return count[0]
」 這是bin_tree類: 「
Class bin_tree():
def __init__(self,data, left_child = None, right_child = None):
self.data = data
self.left = left_child
self.right = right_child
」 我的問題是這樣的: 當我換行: A =叔叔(root.left) a = 1 它沒有工作(含義=變量a由於某種原因已將其值更改爲0),我絕對不知道爲什麼......我認爲它應該起作用,因爲 如果我首先調用函數的遞歸或首先說a = 1,那並不重要。 有人可以幫我嗎?
如果你有'a = 1'後面加上'a = uncle(...)',第二行會覆蓋'a'的值。 – interjay
但爲什麼?我不會返回'a'..那麼爲什麼'a'值正在改變? – user3045065
因爲您正在爲其分配值。這就是'a = something'所做的。 – interjay