思路
深度优先搜索。
复杂度分析
- 时间复杂度O(min(m,n)),m、n分别为两个二叉树的节点数。
- 当m、n相等时,最多查找完所有节点,确定两棵树相同。
- 当m、n不相等时,最多查找完含有较少的节点数的那棵树。
- 空间复杂度O(min(m,n)),其中 m 和 n 分别是两个二叉树的节点数。空间复杂度取决于递归调用的层数,递归调用的层数不会超过较小二叉树的高度,最坏的情况下,二叉树的高度等于节点数。
代码
public static boolean isSameTree(TreeNode p, TreeNode q) {
if (p == null && q == null){
return true;
}
if (p == null || q == null){
return false;
}
if (p.val != q.val){
return false;
}
return isSameTree(p.left, q.left) && isSameTree(p.right,q.right);
}