File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+
8+
9+ # idea : BFS
10+ # Time Complexity : O(size of root * size of subRoot)
11+ from collections import deque
12+
13+ class Solution :
14+ def isSubtree (self , root : Optional [TreeNode ], subRoot : Optional [TreeNode ]) -> bool :
15+ queue = deque ([root ])
16+
17+ while queue :
18+ node = queue .popleft ()
19+
20+ if node :
21+ if self .isSame (node , subRoot ):
22+ return True
23+ queue .append (node .left )
24+ queue .append (node .right )
25+
26+ return False
27+
28+ def isSame (self , r , s ):
29+ if not r and not s :
30+ return True
31+ if not r or not s :
32+ return False
33+ if r .val != s .val :
34+ return False
35+ return self .isSame (r .left , s .left ) and self .isSame (r .right , s .right )
36+
You can’t perform that action at this time.
0 commit comments