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:
Given tree t:
Return true, because t has the same structure and node values with a subtree of s.
Example 2:
Given tree s:
Given tree t:
Return false.
Solution in python:
# 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 isDentical(self, s, t):
if not s and not t:
return True
elif (s and not t) or (not s and t):
return False
else:
if s.val != t.val:
return False
else:
return self.isDentical(s.left, t.left) and self.isDentical(s.right, t.right)
def isSubtree(self, s: TreeNode, t: TreeNode) -> bool:
if not s:
return False
elif self.isDentical(s, t):
return True
else:
return self.isSubtree(s.left, t) or self.isSubtree(s.right, t)
留言