没有self作为第一个参数的python方法

2024-09-27 07:28:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我看到这个问题已经被问了很多次,而且会被标记为重复的问题。然而,我看不到正确的答案。你知道吗

我知道在使用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)。你知道吗


Tags: andselfrightnonenodetruereturnif
1条回答
网友
1楼 · 发布于 2024-09-27 07:28:40

chk只是方法中的函数: 你可以这样重写你的课程:

class Solution:
    def __init__(self):
        self.ans=0

    def countUnivalSubtrees(self, root: TreeNode) -> int:
        if not root:
            return 0
        self.ans = 0
        self.chk(root)        
        return self.ans

    def chk(self, node):
        if node is None:
            return -1
        if node.left is None and node.right is None:
            self.ans += 1
            return True
        l = self.chk(node.left)
        r = self.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

相关问题 更多 >

    热门问题