判断两棵树是否相同,除了结构还要比较每个节点的值。 我才用的做法还是深搜直到不一样返回false,否则返回true。 代码写得比较简单,利用了函数的递归一层层检查并传递结果。 但是这样可能会导致一定的额外时间消耗。 当然还可以用两个stack储存节点来检查,当发现不相同立即返回false。
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if( (p==null&&q!=null)||(p!=null&&q==null) )
{
return false;
}
if( p==null && q==null )
{
return true;
}
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right)&&(p.val==q.val);
}
}