Subtree of another tree

Sneha Michelle,TreesDepth-First Search

Problem Link

Subtree or not (opens in a new tab)

Problem Statement

Make sure to solve Same Tree (opens in a new tab) before solving this.


Algorithm

Since we need ot go through each level of the tree, we do DFS

Code

class Solution {
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
        if (root==null){
            return false;
        }
        
        if (root.val==subRoot.val){
            if (isSame(root, subRoot)){
                return true;
            }
        }
 
        return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
        
    }
 
    private boolean isSame(TreeNode root, TreeNode subRoot){
        if (root==null && subRoot==null){
            return true;
        }
        else if (root==null || subRoot==null || root.val!=subRoot.val){
            return false;
        }
        if (!isSame(root.left, subRoot.left)){
            return false;
        }
        if (!isSame(root.right,subRoot.right)){
            return false;
        }
 
        return true;
    }
}