原题:#572_另一个树的子树
- 关键思路:
- A树是B树的子树的条件:
- 两树完全相同
- A树是B树的左子树
- A树是B树的右子树
- 递归
- 结束条件:A或B为空则为false,AB均为空则为true
- 递归操作:比较A是否为B的左子树,A是否为B的右子树
- 返回值:true/false
- A树是B树的子树的条件:
public boolean isSubtree (TreeNode s, TreeNode t) {
if(s == null && t == null)
return true;
if(s == null || t == null) return false;
if(isEqual(s,t)){ //直接比较节点,简略些
return true;
}
return isSubtree(s.left, t) || isSubtree(s.right, t);
}
public boolean isEqual(TreeNode l, TreeNode r){
if(l == null && r == null) return true;
if(l == null || r == null) return false;
if(l.val == r.val)
return isEqual(l.left,r.left) && isEqual(l.right,r.right);
return false;
}
}