题目描述
题解
本题和【剑指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);
}
}