题目地址:
https://www.lintcode.com/problem/same-tree/description
给定两棵二叉树,判断这两棵二叉树是否相同。相同的定义是,树的结构以及每个节点的值都相同。
可以用分治。如果两棵树都空则返回true,否则若只有一棵树为空则返回false,接着判断树根是否相等,再判断左右子树是否分别相同即可。代码如下:
public class Solution {
/**
* @param a: the root of binary tree a.
* @param b: the root of binary tree b.
* @return: true if they are identical, or false.
*/
public boolean isIdentical(TreeNode a, TreeNode b) {
// write your code here
if (a == null && b == null) {
return true;
} else if (a == null || b == null) {
return false;
}
return a.val == b.val && isIdentical(a.left, b.left) && isIdentical(a.right, b.right);
}
}
class TreeNode {
int val;
TreeNode left, right;
TreeNode(int x) {
val = x;
}
}
时间复杂度 O ( n ) O(n) O(n),空间 O ( h ) O(h) O(h)。