import java.lang.*; import java.util.*; import node.*; class Subtree { public static boolean isSubtree(TreeNode root, TreeNode subRoot) { if (root == null && subRoot == null) return true; else if (root == null || subRoot == null) return false; else if (root.val == subRoot.val) return isSubtree(root.left, subRoot.left) && isSubtree(root.right, subRoot.right); return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot); } public static void main(String[] args) { TreeNode leftLeaf = new TreeNode(1); TreeNode middleLeaf = new TreeNode(2); TreeNode leftParent = new TreeNode(4, leftLeaf, middleLeaf); TreeNode rightLeaf = new TreeNode(5); TreeNode root = new TreeNode(3, leftParent, rightLeaf); TreeNode subLeft = new TreeNode(1); TreeNode subRight = new TreeNode(2); TreeNode subRoot = new TreeNode(4, subLeft, subRight); System.out.println(isSubtree(root, subRoot)); } }