This approach involves using a recursive function to traverse the root tree and checking for a matching subtree starting from every node. A helper function can be used to check if trees rooted at specific nodes are identical.
Time Complexity: O(N*M), where N is the number of nodes in the root tree and M is the number of nodes in subRoot tree.
Space Complexity: O(min(N, M)), depending on the tree height during recursion.
1var isSubtree = function(root, subRoot) {
2 if (!root) return false;
3 if (isIdentical(root, subRoot)) return true;
4 return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
5};
6
7var isIdentical = function(s, t) {
8 if (!s && !t) return true;
9 if (!s || !t) return false;
10 return s.val === t.val && isIdentical(s.left, t.left) && isIdentical(s.right, t.right);
11};
The JavaScript solution is similar in logic to other solutions, employing two functions: isSubtree
and isIdentical
. It checks recursively whether the trees rooted at two nodes are the same.
Another approach to solving this problem is by converting the trees into their preorder traversal strings with marker symbols for nulls, and then checking if the subRoot string is a substring of the root string.
Time Complexity: O(N + M + N*M), where N and M are the sizes of the trees.
Space Complexity: O(N + M), for the preorder traversal strings.
1class Solution {
2 public boolean isSubtree(TreeNode root, TreeNode subRoot) {
3 String rootStr = preorder(root, new StringBuilder()).toString();
4 String subRootStr = preorder(subRoot, new StringBuilder()).toString();
5 return rootStr.contains(subRootStr);
6 }
7
8 private StringBuilder preorder(TreeNode node, StringBuilder sb) {
9 if (node == null) {
10 sb.append("null ");
11 return sb;
12 }
13 sb.append(node.val).append(' ');
14 preorder(node.left, sb);
15 preorder(node.right, sb);
16 return sb;
17 }
18}
Uses StringBuilder
for efficient string concatenation while performing a preorder traversal; employs .contains
to check if the serialized subRoot appears within the root's serialization.