572. Subtree of Another Tree
完全相同的子树结构:
public boolean isSubtree(TreeNode s, TreeNode t) {
if (s == null || t == null) return false;
if (dfs(s, t)) return true;
return isSubtree(s.left, t) || isSubtree(s.right, t);
}
public boolean dfs(TreeNode s, TreeNode t) {
if (s == null && t == null) return true;
if (s == null || t == null) return false;
return (s.val == t.val) && dfs(s.left, t.left) && dfs(s.right, t.right);
}
部分相同的子树结构, 如
[8,8,7,9,2,null,null,null,null,4,7]
[8,9,2]
区别点在sametree函数
public boolean HasSubtree(TreeNode s,TreeNode t) {
if (s == null || t == null) return false;
if (dfs(s, t)) return true;
return HasSubtree(s.left, t) || HasSubtree(s.right, t);
}
public boolean dfs(TreeNode s, TreeNode t) {
if (t == null) return true;
if (s == null) return false;
return (s.val == t.val) && dfs(s.left, t.left) && dfs(s.right, t.right);
}