572 Subtree of Another Tree
3
/ \
4 5
/ \
1 2 4
/ \
1 2 3
/ \
4 5
/ \
1 2
/
0Last updated
3
/ \
4 5
/ \
1 2 4
/ \
1 2 3
/ \
4 5
/ \
1 2
/
0Last updated
4
/ \
1 2# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def contains_subarray(self, ar1, ar2):
iter = 0
go_to = len(ar2) - len(ar1)
while (iter <= go_to):
cur_sub = ar2[iter:len(ar1) + iter]
if (cur_sub == ar1):
return True
iter += 1
return False
def isSubtree(self, s, t):
"""
:type s: TreeNode
:type t: TreeNode
:rtype: bool
"""
arr_s = []
arr_t = []
self.generate_preOrder_string(s, arr_s, False)
self.generate_preOrder_string(t, arr_t, False)
return self.contains_subarray(arr_t, arr_s)
def generate_preOrder_string(self, node, cum_str, isLeft):
if node:
cum_str.append(str(node.val))
self.generate_preOrder_string(node.left, cum_str, False)
self.generate_preOrder_string(node.right, cum_str, True)
elif(isLeft):
cum_str.append("$")
else:
cum_str.append("#")