Skip to content

Latest commit

 

History

History
50 lines (42 loc) · 1.4 KB

Question_572.md

File metadata and controls

50 lines (42 loc) · 1.4 KB

LeetCode Records - Question 572 Subtree of Another Tree

Attempt 1: Use two recursive functions

class Solution {
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
        if (root == null) {
            return false;
        } else if (isSubtreeRecursion(root, subRoot)) {
            return true;
        }

        if (isSubtree(root.left, subRoot)) {
            return true;
        } else if (isSubtree(root.right, subRoot)) {
            return true;
        }

        return false;
    }

    private boolean isSubtreeRecursion(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 false;
        }

        if ((root.left == null && subRoot.left != null) || (root.left != null && subRoot.left == null)) {
            return false;
        } else if ((root.right == null && subRoot.right != null) || (root.right != null && subRoot.right == null)) {
            return false;
        }

        if (!isSubtreeRecursion(root.left, subRoot.left)) {
            return false;
        } else if (!isSubtreeRecursion(root.right, subRoot.right)) {
            return false;
        }

        return true;
    }
}
  • Runtime: 2 ms (Beats: 96.95%)
  • Memory: 44.50 MB (Beats: 27.03%)