моя миссия - построить функцию, которая возвращает число «дядей» в данном двоичном дереве. Узел - дядя, только если его брат (второй ребенок его отца) имеет детей. Это мой код: "Найти «дядю» в бинарном дереве - 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
" Моя проблема заключается в следующем: Когда я переключился строки: а = дядя (root.left) a = 1 Это не сработало (значение = переменная a изменила свое значение на 0 по какой-то причине), и я абсолютно не знаю, почему .. Я думал, что это должно было сработать, потому что не имеет значения, если я сначала вызову функцию рекурсии или сначала скажу a = 1. Может кто-нибудь мне помочь?
Если у вас есть 'a = 1', за которым следует' a = дядя (...) ', вторая строка перезапишет значение' a'. – interjay
но почему? Я не возвращаю «а» .. так почему «значение» меняется? – user3045065
Потому что вы назначаете ему значение. Это то, что делает «a = что-то». – interjay