最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 【Daily Interview】- 14 相同的树

    正文概述 掘金(初心Yearth)   2021-01-04   398

    题目

    【Daily Interview】- 14 相同的树
    图片1

    !! 题目来源:相同的树 - 力扣

    分析

    所谓树,其实是基于链表之上的一种数据结构,通过之前的学习,我们已经清楚了什么是链表,而在此之上,若节点不仅仅有一个 next,而是有多个 next 指向不同的节点,那便形成了树,可见下图:

    【Daily Interview】- 14 相同的树
    图片2

    其中顶部的节点被称为树的根节点,根据上图,我们可以大致得出树的结构:

    class TreeNode {
        constructor(value) {
            this.val = value
            this.children = []
        }
    }

    在树的基础上,如果规定任意节点至多有两个节点,分别称为 leftright,那么这棵树便是一棵二叉树,具体可见下图:

    【Daily Interview】- 14 相同的树
    图片3

    基本知识的铺垫暂时到这,随着后面的刷问题会继续深入,接下来我们分析一下题目:

    • 这是一颗二叉树
    • 树在结构上相同,并且节点具有相同的值,则判定它们相同

    根据上述两点,我们可以得出以下的一些信息:

    • 树的结构大致如下:
    function TreeNode(val, left, right) {     
       this.val = (val===undefined ? 0 : val)
        this.left = (left===undefined ? null : left)
        this.right = (right===undefined ? null : right)
    }
    • 树需要结构和每个节点的值相同才能判定相同,比如下面两树就是不同的:
    【Daily Interview】- 14 相同的树
    图片4

    结合上述信息,我们应当在代码层面判断两树相等呢?

    • 首先我们一定是需要用递归的手段来遍历树
    • 其次,当我们递归的时候,实现应该聚焦在当前节点,收窄关注点
    • 对于当前节点,有什么可以判断的呢?
      • 如果当前节点皆为空,显然它们是相等的
      • 如果一个节点为空,一个不为空,显然让门不相等
      • 如果二者皆不为空,但二者值不相等,那它们必不相等

    大体思路如上,这里按部就班实现代码即可:

    var isSameTree = function (p, q) {
      if (p === null && q === null) return true;
      if (p === null || q === null) return false;
      if (p.val !== q.val) return false;
      return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    };

    结果如下:

    【Daily Interview】- 14 相同的树
    图片5

    !! ? tip:或许有的读者会觉得上述条件忽略了二者皆不为空,但二者值相等的情况,认为这个时候二者应该相等才对,但无论从代码还是思路中都没有体现这点。但实际上,这样的思考存在一个盲区,那就是子节点的相等问题,虽然在递归的时候要将目光聚焦到当前节点,但是不能忘记全局的判断。


    起源地下载网 » 【Daily Interview】- 14 相同的树

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元