若一颗树是另一个树的子树,那么它可能与另个一相等、或是另一个树的左子树、或是另一个树的右子树。
当上述三个条件满足一个时,即可返回true,因此使用 ||
运算符。
判断两个数是否相等,可以参考 100. 相同的树,也是通过递归判断每个结点的值预计左子树和右子树的各结点的值。
class Solution {
public boolean isSubtree(TreeNode s, TreeNode t) {
if(t==null)return true;
if(s == null)return false;
return isSameTree(s, t) || isSubtree(s.left, t) || isSubtree(s.right, t);
}
public boolean isSameTree(TreeNode s, TreeNode t){
if(s == null && t==null)return true;
if(s == null || t == null)return false;
if(s.val != t.val)return false;
return isSameTree(s.left, t.left) && isSameTree(s.right, t.right);
}
}