Итак, строка кода, которую вы упомянули, а именно
is_uni = self.is_uni(node.left) and is_uni and node.left.val == node.val
Эта строка кода рекурсивно вызывает функцию-член класса is_uni()
(self.some_member_function()
- это синтаксис, который python использует для доступа к переменным-членам и функциям текущего экземпляра класса. Он похож на оператор this
в C, C ++ и т. д.), и логика этой строки заключается в том, что вы хотите проверить, является ли левое поддерево с корнем в node.left
деревом унивальных значений и что значение is_uni
равно True
и что значение левого узла node.left.val
совпадает с узлом текущего проверяемого node
.
Теперь эта логика будет повторяться до тех пор, пока вы не достигнете конца левого поддерева с корнем в node.left
. Аналогичная логика для проверки, является ли правое поддерево с корнем в node.right
деревом однозначных значений и что его значение node.right.val
совпадает с текущим node
. Эти 2 рекурсивных вызова инициируются до тех пор, пока не будут проверены все узлы дерева.
Надеюсь, это поможет! Если вам нужны дополнительные разъяснения, дайте мне знать в комментариях.