算法工程题(二叉树递归)

*  题意说明:
*      给你两棵二叉树的根节点 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;
    }
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员爱摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值