做了这么多题,看到题总得会提炼条件、输出,就做对了一半。
条件:1.树的结构相同 2.每个结点对应的值也相同
输出: true 或者 false
首先吧,树类型的题一定先去用递归思考。
因为树的结构问题,它的左右子树又可以被看作一颗独立的树。
递归
跳出条件:当两个树都是空结点时,说明遍历到了树的叶子节点。
成立条件:1.两棵树都不为空 2.根节点的值相等
不满足成功条件的就是返回false
递归:把本结点的左右子树传进来判断是否相等,都相等才返回true
完整代码
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null && q==null){
return true;
}
if(p!=null && q!=null && p.val == q.val){
return isSameTree(p.left,q.left)
&&isSameTree(p.right,q.right);
}
else{
return false;
}
}
}