smj007

Untitled

Jun 19th, 2022 (edited)
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. # Definition for a binary tree node.
  2. # class TreeNode:
  3. #     def __init__(self, val=0, left=None, right=None):
  4. #         self.val = val
  5. #         self.left = left
  6. #         self.right = right
  7. class Solution:
  8.    
  9.     def sameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
  10.        
  11.         # base case: if both are null nodes
  12.         if not p and not q:
  13.             return True
  14.  
  15.         # if both happen to be actual nodes
  16.         if p and q:
  17.             return (p.val == q.val) and self.sameTree(p.left, q.left) and self.sameTree(p.right, q.right)
  18.  
  19.         # if either of them is not a null node
  20.         return False
  21.        
  22.        
  23.     def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool:
  24.        
  25.         # base case: both are null-nodes
  26.         if not root and not subRoot:
  27.             return True
  28.        
  29.         # base case: either root is null or subroot is null
  30.         # then return obviously return False
  31.         if not root or not subRoot:
  32.             return False
  33.        
  34.         # for rest of the cases when root is a node
  35.         if self.sameTree(root, subRoot) or self.sameTree(root.left, subRoot) or self.sameTree(root.right, subRoot):
  36.             return True
  37.        
  38.         return self.isSubtree(root.left, subRoot) or self.isSubtree(root.right, subRoot)
  39.        
Add Comment
Please, Sign In to add comment