题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
题解:利用DFS算法递归遍历两棵树,比较结点数字的大小是否相同,以及两棵树的结点是否都存在或都不存在
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
class solution {
boolean same=true;
public boolean isSameTree(TreeNode p, TreeNode q) {
move(p,q);
return same;
}
private void move(TreeNode p, TreeNode q){
if(p==null&&q==null)
return;
if(!(p!=null&&q!=null)||p.val!=q.val) {
same = false;
return;
}
if(p!=null&&q!=null)
move(p.left,q.left);
move(p.right,q.right);
}
}