原题连接:leetcode-cn.com/problems/sa…
题目描述: 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
样例1


样例3

思路:
可以参考二叉树中序遍历的方法:
1.先看两个二叉树当前节点的val是否相等,若二叉树则这个这两个二差树肯定是不等的
2.再递归看两个二叉树的左边节点是否相等,若不等,则二叉树肯定是不等的
3.再递归看两个二叉树的右边边节点是否相等,若不等,则二叉树肯定是不等的
上代码
二叉树的类:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
遍历方法:
public static boolean printNode(TreeNode node,TreeNode node2){
if (node.val!=node2.val){//比较当前节点
return false;
}
if(node.left!=null&&node2.left!=null){//若左边两个都不为空 可以进行递归调用
if(!printNode(node.left,node2.left)){
return false;
}
}else if (node.left==null&&node2.left==null){//若左边两个都为空 则肯定是相等的 这里只是为了区别else的情况
}else{//做左边有一个为空 则肯定不想等
return false;
}
if(node.right!=null&&node2.right!=null){//同左边
if(!printNode(node.right,node2.right)){
return false;
}
}else if (node.right==null&&node2.right==null){
return true;
}else{
return false;
}
return true;//不同的情况都排除了 当然是对的
}
编写样例1测试代码
public class Main{
public static void main(String[]args){
TreeNode root1 = new TreeNode(1);
TreeNode roo1L = new TreeNode(2);
TreeNode roo1R = new TreeNode(3);
root1.left = roo1L;
root1.right = roo1R;
TreeNode root2 = new TreeNode(1);
TreeNode roo2L = new TreeNode(2);
TreeNode roo2R = new TreeNode(3);
root2.left = roo2L;
root2.right = roo2R;
System.out.println(Solution.printNode(root1,root2));
}
}
结果:

public class Main{
public static void main(String[]args){
TreeNode root1 = new TreeNode(1);
TreeNode roo1L = new TreeNode(2);
// TreeNode roo1R = new TreeNode(3);
root1.left = roo1L;
// root1.right = roo1R;
TreeNode root2 = new TreeNode(1);
// TreeNode roo2L = new TreeNode(2);
TreeNode roo2R = new TreeNode(2);
// root2.left = roo2L;
root2.right = roo2R;
System.out.println(Solution.printNode(root1,root2));
}
}
结果:

编写样例3测试代码
public class Main{
public static void main(String[]args){
TreeNode root1 = new TreeNode(1);
TreeNode roo1L = new TreeNode(1);
TreeNode roo1R = new TreeNode(2);
root1.left = roo1L;
root1.right = roo1R;
TreeNode root2 = new TreeNode(1);
TreeNode roo2L = new TreeNode(2);
TreeNode roo2R = new TreeNode(1);
root2.left = roo2L;
root2.right = roo2R;
System.out.println(Solution.printNode(root1,root2));
}
}
结果:
