Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and node values with a subtree of s. A subtree of s is a tree consists of a node in s and all of this node's descendants. The tree s could also be considered as a subtree of itself.
Example 1:
Given tree s:
3
/ \
4 5
/ \
1 2
Given tree t:
4
/ \
1 2
Return true, because t has the same structure and node values with a subtree of s.
Example 2:
Given tree s:
3
/ \
4 5
/ \
1 2
/
0
Given tree t:
4
/ \
1 2
Return false.
My code:
# 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 isSubtree(self, s, t):
"""
:type s: TreeNode
:type t: TreeNode
:rtype: bool
"""
label=self.isSubtree2(s,t,0)
return label
def isSubtree2(self,s,t,mode):
if s==None and t==None:
return True
if s==None and t!=None:
return False
if t==None and s!=None:
return False
if s.val==t.val:
label1=self.isSubtree2(s.left,t.left,1)
label2=self.isSubtree2(s.right,t.right,1)
if label1 and label2:
return True
if mode==0:
label1=self.isSubtree2(s.left,t,0)
label2=self.isSubtree2(s.right,t,0)
if label1 or label2:
return True
return False
Solution: https://leetcode.com/problems/subtree-of-another-tree/