package class06;
/***
* 判断两个二叉树是否相同
*
* 已知两个数的头节点分别是head1和head2。
* 结构相同并且对应的节点的值也相同,则认为它们是相同的。
*/
//测试链接:https://leetcode.com/problems/same-tree
public class Code02_SameTree {
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public static boolean isSameTree(TreeNode head1, TreeNode head2) {
if (head1 == null ^ head2 == null) {//head1==null和head2==null不相等,即一个为空并且一个不为空。
return false;
}
if (head1 == null && head2 == null) {//两个都是空
return true;
}
//如果头节点的值相等。并且head1的左子节点和head2的左子节点相等。并且head1的右子节点和head2的右子节点相等。那么总体返回true。
//否则返回false。
return head1.val == head2.val && isSameTree(head1.left, head2.left) && isSameTree(head1.right, head2.right);
}
public static void main(String[] args) {
TreeNode treeNode = new TreeNode(1);
treeNode.left = new TreeNode(2);
treeNode.right = new TreeNode(3);
treeNode.left.left = new TreeNode(4);
treeNode.left.right = new TreeNode(5);
treeNode.right.left = new TreeNode(6);
treeNode.right.right = new TreeNode(7);
boolean sameTree = isSameTree(treeNode, treeNode);
System.out.println("sameTree = " + sameTree);
}
}