package com.example.lettcode.dailyexercises;
/**
* @Class IsSameTree
* @Description 100.相同的树
* 给定两个二叉树,编写一个函数来检验它们是否相同。
* 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
* <p>
* 示例 1:
* 输入:
* 1 1
* / /
* 2 3 2 3
* <p>
* [1,2,3], [1,2,3]
* <p>
* 输出: true
* <p>
* 示例 2:
* <p>
* 输入:
* 1 1
* /
* 2 2
* <p>
* [1,2], [1,null,2]
* <p>
* 输出: false
* <p>
* 示例 3:
* 输入:
* 1 1
* / /
* 2 1 1 2
* <p>
* [1,2,1], [1,1,2]
* <p>
* 输出: false
* @Author
* @Date 2020/8/7
**/
public class IsSameTree {
static 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;
}
}
public static boolean isSameTree(TreeNode p, TreeNode q) {
if (p == null) return q == null;
if (q == null) return p == null;
if (p.val != q.val) return false;
boolean resL = isSameTree(p.left, q.left);
boolean resR = isSameTree(p.right, q.right);
return resL && resR;
}
public static void main(String[] args) {
// [1,2,3], [1,2,3]
TreeNode rootP = new TreeNode(1);
TreeNode treeNode2 = new TreeNode(2);
TreeNode treeNode3 = new TreeNode(3);
rootP.left = treeNode2;
rootP.right = treeNode3;
TreeNode rootQ = new TreeNode(1);
treeNode2 = new TreeNode(2);
treeNode3 = new TreeNode(3);
rootQ.left = treeNode2;
rootQ.right = treeNode3;
boolean ans = isSameTree(rootP, rootQ);
System.out.println("IsSameTree demo01 result:" + ans);
// [1,2], [1,null,2]
rootP = new TreeNode(1);
treeNode2 = new TreeNode(2);
rootP.left = treeNode2;
rootQ = new TreeNode(1);
treeNode2 = new TreeNode(2);
rootQ.right = treeNode2;
ans = isSameTree(rootP, rootQ);
System.out.println("IsSameTree demo02 result:" + ans);
//[1,2,1], [1,1,2]
rootP = new TreeNode(1);
treeNode2 = new TreeNode(2);
treeNode3 = new TreeNode(1);
rootP.left = treeNode2;
rootP.right = treeNode3;
rootQ = new TreeNode(1);
treeNode2 = new TreeNode(1);
treeNode3 = new TreeNode(2);
rootQ.left = treeNode2;
rootQ.right = treeNode3;
ans = isSameTree(rootP, rootQ);
System.out.println("IsSameTree demo03 result:" + ans);
}
}