【Leetcode】572. 另一棵树的子树

158 阅读1分钟

题目描述

在这里插入图片描述

题解

本题和【剑指offer】26. 树的子结构很像,但是注意在空值判定上要更严格。

执行用时:3 ms, 在所有 Java 提交中击败了86.35%的用户

内存消耗:38.5 MB, 在所有 Java 提交中击败了74.28%的用户

通过测试用例:182 / 182

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isSubtree(TreeNode A, TreeNode B) {
        if (B == null)
			return true;
		if (A == null)
			return false;
		return (recur(A, B) || isSubtree(A.left, B) || isSubtree(A.right, B));
	}
	
	private boolean recur(TreeNode A, TreeNode B) {
		if (B == null && A == null) return true;
		if (A == null || B == null) return false;
		if (A.val != B.val) return false;
		return recur(A.left, B.left) && recur(A.right, B.right);
	}

}