题目的意思是俩棵树的结构不仅要相同,而且每个节点的值还要相同,如果满足上面2个条件,则成立!
解题思路:
从三个方面去考虑:
1.如果p,q都为空,那么一定相同;
2.如果p为空,q不为空,或者p不为空,q为空,那么一定不相同;
3.如果二者都不为空,那么需要判断根节点,如果根节点不相同,那么一定不相同,如果相同,我们需要比较左右子树的值和左右子树的结构;
代码:
publicbooleanisSameTree(TreeNodep, TreeNodeq) { //如果p,q都为空,那么这2个树一定相同if (p==null&&q==null) { returntrue; } //如果q为空,p不为空,那么一定不相同,或者p为空,q不为空,那么一定不相同if (p!=null&&q==null||p==null&&q!=null) { returnfalse; } //如果p,q都不为空,那么要判断值,如果值不相同,那么一定不相同if (p.val!=q.val) { returnfalse; } //如果p,q都不为空,并且p,q的值相同,那么要判断p,q的左右子树的值,如果相同为真,反之;returnisSameTree(p.left, q.left) &&isSameTree(p.right, q.right); }