Привет, ребята, поэтому у меня проблема, и это не так, что моя инструкция return не выполняется. Это мой код sudo. Он ищет дерево, чтобы увидеть, находится ли элемент в дереве.Оператор возврата не выполняет
def search(self, i):
if left child is None and right child is None
if self.data == i:
return True
else:
pass
elif self.data == i:
return True
else:
if left child exists:
return self.left.search(i)
if right child exists:
return self.right.search(i)
код, кажется, работает, за исключением, когда self.data == i
, код не работает обратное Истинное заявление даже несмотря на то , если выполняются оператор. Кто-нибудь знает, почему это? Спасибо заранее!
РЕДАКТОРА: ДОБАВЛЕН САМОГО ПАРАМЕТРА. ЭТО БЫЛО ПРЕДОТВРАТНО, БЫЛО ТАЙПО.
Я вставил числа 3, 8, 2 и 1 в дерево, а затем выполнил поиск 1. Я добавил инструкцию печати, если левый дочерний элемент None, а правый - None: if self.data == i: print ('self.data == i') return True Я добавил, что заявление печати при поиске 1 и заявление печати напечатали, что означает, что оператор if был выполнен, однако, return True statement не выполняется
Если вы не предоставили прецедент, мы не можем сказать, в чем проблема. Моя склонность заключается в том, что либо 'i', либо' self.data' - это не то, что вы думаете, так что ваш условный объект оценивается как «ложный», если вы этого не думаете. Попробуйте сделать это 'pass'' return False' и посмотреть, что вы получите. –
Просьба предоставить [SSCCE] (http://sscce.org) –
Хм нет, я вставил числа 3, 8, 2 и 1 в дерево, а затем искал 1. Я добавил заявление о печати , если левый ребенок is None и right child is None: if self.data == i: print ('self.data == i') return True Я добавил, что заявление о печати при поиске 1 и заявлении на печать напечатали, что означает, что оператор if был выполнен , однако возвращаемый оператор True не выполняется. –