为什么我没有得到预期的输出?

Why Am I not getting expected output?

我是初学者 trees.I 定义了一个 findNode 函数到 return node.Then 我递归地检查节点作为根和子树是否是 same.But 我没有获得以下测试用例的预期输出。怎么能改呢。 提前致谢

预计output:true

输入:树:[1,1]

子树:[1]

但我得到的输出是错误的

leetcode问题:https://leetcode.com/problems/subtree-of-another-tree/submissions/

    def findNode(self,root,subRoot):
        if root==None:
            return None
        if root.val==subRoot.val:
            return root
        if root.left:
            return self.findNode(root.left,subRoot)
        if root.right:
            return self.findNode(root.right,subRoot)
        
    def check(self,root,subRoot):
        if root==None and subRoot==None:
            return True
        if root==None or subRoot==None:
            return False
        if root.val!=subRoot.val:
            return False
        return self.check(root.right,subRoot.right) and self.check(root.left,subRoot.left)
    
    def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool:
        node=self.findNode(root,subRoot)
        return self.check(node,subRoot)
    ```

您的代码中存在问题,因为一旦您找到与 subRoot 节点匹配的节点,您就会停止搜索并使用 运行 check() 函数,它可以 return false 并且您的程序将 return false 而不检查可以匹配的更深的子树。这是我的代码:

class Solution:
    def findMatchingTree(self,root,subRoot):
        if root==None:
            return False
        return self.check(root, subRoot) or self.findMatchingTree(root.left,subRoot) or self.findMatchingTree(root.right,subRoot)
        
    def check(self,root,subRoot):
        if root==None and subRoot==None:
            return True
        if root==None or subRoot==None:
            return False
        if root.val!=subRoot.val:
            return False
        return self.check(root.right,subRoot.right) and self.check(root.left,subRoot.left)
    
    def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool:
        return self.findMatchingTree(root,subRoot)

如果你想使代码更快,我建议你从树的叶子中搜索根。