* 题意说明: * 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 * 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 * * 示例 1: * 输入:p = [1,2,3], q = [1,2,3] * 输出:true * * 示例 2: * 输入:p = [1,2], q = [1,null,2] * 输出:false * * 示例 3: * 输入:p = [1,2,1], q = [1,1,2] * 输出:false * * 提示: * 两棵树上的节点数目都在范围 [0, 100] 内 * -104 <= Node.val <= 104 * * Related Topics * 树 * 深度优先搜索 * 广度优先搜索 * 二叉树 * * @Date 2023/9/4 9:36 * @Version 1.0
示例:
public class IsSameTree_019 {
public static void main(String[] args) {
// 测试验证
}
public static boolean isSameTree(TreeNode p, TreeNode q) {
return false;
}
}
使用递归的方式来实现:
public class IsSameTree_019 {
public static void main(String[] args) {
TreeNode p;
p = new TreeNode(1);
p.left = new TreeNode(2);
p.right = new TreeNode(3);
TreeNode q;
q = new TreeNode(1);
q.left = new TreeNode(2);
q.right = new TreeNode(3);
// 测试验证
System.out.println(isSameTree(p,q));
}
public static boolean isSameTree(TreeNode p, TreeNode q){
//首先判断是否俩个节点为空
if(p == null && q == null)
return true;
//判断俩边节点是否对等 返回为false
if((q == null && p != null) || (p == null && q != null))
return false;
//判断值不相同也返回false
if (p.val != q.val){
return false;
}else
return (isSameTree(p.left,q.left) && isSameTree(p.right,q.right));
}
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;
}
}
}