Similar Problems
Similar Problems not available
Subtree Of Another Tree - Leetcode Solution
Companies:
LeetCode: Subtree Of Another Tree Leetcode Solution
Difficulty: Easy
Topics: tree binary-tree depth-first-search
The Subtree Of Another Tree problem on LeetCode asks you to determine if a given binary tree is a subtree of another binary tree.
Here is the problem statement:
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 the following tree s:
3
/ \
4 5
/ \
1 2
Given the following tree t:
4
/ \
1 2
Return true, because t has the same structure and node values with a subtree of s.
Example 2:
Given the following tree s:
3
/ \
4 5
/ \
1 2
/
0
Given the following tree t:
4
/ \
1 2
Return false.
The solution to this problem can be approached using recursion. To check if tree t
is a subtree of s
, we need to check if tree t
is a subtree of both the left and right subtrees of s
.
We can define a helper function called isSameTree
that checks if two trees are the same. This function can be called recursively to check if the subtree of s
at each node is the same as t
.
Here is the solution in Python:
class Solution:
def isSubtree(self, s: TreeNode, t: TreeNode) -> bool:
if not s:
return False
if self.isSameTree(s, t):
return True
return self.isSubtree(s.left, t) or self.isSubtree(s.right, t)
def isSameTree(self, s: TreeNode, t: TreeNode) -> bool:
if not s and not t:
return True
if not s or not t:
return False
if s.val != t.val:
return False
return self.isSameTree(s.left, t.left) and self.isSameTree(s.right, t.right)
In the isSubtree
function, we first check if s
is empty. If s
is empty, then t
cannot be a subtree of s
.
Next, we check if the root nodes of s
and t
are the same using the isSameTree
function. If they are the same, then t
is a subtree of s
.
If the root nodes of s
and t
are not the same, then t
may be a subtree of the left subtree or the right subtree of s
. We recursively call the isSubtree
function on the left and right subtrees of s
.
In the isSameTree
function, we first check if s
and t
are both empty. If they are both empty, then they are the same.
If one of s
or t
is empty but the other is not, then they are not the same. If the values of the root nodes of s
and t
are different, then they are not the same.
If the values of the root nodes of s
and t
are the same, then we recursively check if their left and right subtrees are the same.
This solution has a time complexity of O(m*n) in the worst case, where m and n are the number of nodes in s
and t
, respectively. This is because we need to check if t
is a subtree of each node in s
. However, in practice, the time complexity is much lower because we can usually prune the search early.
Subtree Of Another Tree Solution Code
1