zoukankan      html  css  js  c++  java
  • LeetCode算法题-Same Tree(Java实现)

    这是悦乐书的第162次更新,第164篇原创

    01 看题和准备

    今天介绍的是LeetCode算法题中Easy级别的第21题(顺位题号是100)。给定两个二叉树,编写一个函数来检查它们是否相同。如果两个二叉树在结构上相同并且节点具有相同的值,则认为它们是相的。例如:

    输入:    1   1
            /   / 
           2 3   2 3
    [1,2,3],[1,2,3]
    输出:true
    
    输入:1   1
         /    
        2      2
    [1,2],[1,null,2]
    输出:false
    

    本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

    02 分析与解题

    如果两个二叉树相同,那么两个二叉树的节点值肯定都要相同。从根节点一直到最后一个子节点,出现一个不相同的值,那么两个二叉树就不是相同的。当一个二叉树从根节点、左子节点、右子节点依次向下延伸的时候,每次获取到他们的值,然后再进行比较,如果相同,则继续找下一点节点进行比较,直到所有节点比较完。

    每次进入下一个循环判断的时候,当前节点都是一个新的二叉树,可能是根节点,也可能是拥有子节点,所以我们可以借助递归的方法来解题。

    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null || q == null) {
            return p == q;
        }
        boolean f = p.val == q.val;
        boolean f2 = isSameTree(p.left, q.left);
        boolean f3 = isSameTree(p.right, q.right);
        return f && f2 && f3;
    }
    

    03 小结

    以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

  • 相关阅读:
    thunkify 模块
    koa框架异步返回值的操作(co,koa-compose)
    ES6 基础版迭代器
    静态类在线程中的共享问题
    AWS远程登录
    系统状体检测命令
    常用系统命令
    文本文件查看命令
    vim
    查看md5
  • 原文地址:https://www.cnblogs.com/xiaochuan94/p/9907172.html
Copyright © 2011-2022 走看看