Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Definition for a binary tree node.
- # class TreeNode:
- # def __init__(self, val=0, left=None, right=None):
- # self.val = val
- # self.left = left
- # self.right = right
- class Solution:
- def sameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
- # base case: if both are null nodes
- if not p and not q:
- return True
- # if both happen to be actual nodes
- if p and q:
- return (p.val == q.val) and self.sameTree(p.left, q.left) and self.sameTree(p.right, q.right)
- # if either of them is not a null node
- return False
- def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool:
- # base case: both are null-nodes
- if not root and not subRoot:
- return True
- # base case: either root is null or subroot is null
- # then return obviously return False
- if not root or not subRoot:
- return False
- # for rest of the cases when root is a node
- if self.sameTree(root, subRoot) or self.sameTree(root.left, subRoot) or self.sameTree(root.right, subRoot):
- return True
- return self.isSubtree(root.left, subRoot) or self.isSubtree(root.right, subRoot)
Add Comment
Please, Sign In to add comment