Я видел, что этот вопрос задавался несколько раз и будет отмечен как дубликат. Тем не менее, я не вижу правильного ответа.
Я понимаю, что при использовании концепции OOPS экземпляр объекта отправляется в качестве первого параметра. Однако, решая несколько алгоритмов, я вижу несколько методов, определенных без self
, и это меня смущает.
Может кто-нибудь объяснить, что здесь происходит, а не почему self
используется?
class Solution:
def __init__(self):
self.ans=0
def countUnivalSubtrees(self, root: TreeNode) -> int:
if not root:
return 0
def chk(node):
if node is None:
return -1
if node.left is None and node.right is None:
self.ans+=1
return True
l=chk(node.left)
r=chk(node.right)
if node.left and node.right:
if node.left.val==node.right.val and l and r and node.val==node.left.val:
self.ans+=1
return True
if l==-1 and r and node.val==node.right.val:
self.ans+=1
return True
if r==-1 and l and node.val==node.left.val:
self.ans+=1
return True
return False
self.ans=0
chk(root)
return self.ans
Метод, о котором я здесь говорю, это chk(node)
.