-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path572.py
28 lines (27 loc) · 993 Bytes
/
572.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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 isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
if p == None and q == None:
return True
elif p and q:
return p.val == q.val and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
else:
return False
return self.isSameTree(p, q)
def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool:
result = False
def recursion(root):
nonlocal result
if root == None:
return
if root.val == subRoot.val:
result = result or self.isSameTree(root, subRoot)
recursion(root.left)
recursion(root.right)
recursion(root)
return result