首页 > 其他分享 >js.相同的树

js.相同的树

时间:2024-10-29 23:21:41浏览次数:9  
标签:right val 相同 js arr2 arr1 null left

链接:100. 相同的树 - 力扣(LeetCode)

题目:

给你两棵二叉树的根节点 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

思路:

层次遍历,如果两棵树结点的值不一样,返回false;

如果结点值相同且不为null,将数组第一个元素的左右结点放入数组队列,删除数组第一个元素;

如果结点值相同且为null,将数组第一个元素删除后,函数continue

代码:

/**

 * Definition for a binary tree node.

 * function TreeNode(val, left, right) {

 *     this.val = (val===undefined ? 0 : val)

 *     this.left = (left===undefined ? null : left)

 *     this.right = (right===undefined ? null : right)

 * }

 */

/**

 * @param {TreeNode} p

 * @param {TreeNode} q

 * @return {boolean}

 */

var isSameTree = function(p, q) {

    let arr1 = [p] , arr2 = [q]

    while(arr1.length||arr2.length){

        // 取出两个树的值

        let a = arr1[0]?arr1[0].val:null

        let b = arr2[0]?arr2[0].val:null

        // 比较值,分情况判断

        if(a!=b) return false

        if(a==null){

            arr1.shift()

            arr2.shift()

            continue

        }

        arr1.push(arr1[0].left)

        arr1.push(arr1[0].right)

        arr1.shift()

       

        arr2.push(arr2[0].left)

        arr2.push(arr2[0].right)

        arr2.shift()

        // console.log(2,arr1,arr2)

    }

    return true

};

标签:right,val,相同,js,arr2,arr1,null,left
From: https://blog.csdn.net/qq_62541773/article/details/143331314

相关文章

  • eslint配置文件eslintrc.js
    eslintrc.js是ESLint的配置文件,主要用于定义代码质量和风格规则。ESLint是一个流行的JavaScript和TypeScript代码静态分析工具,可以帮助开发者识别和修复潜在的代码问题,确保代码的一致性和质量。1.功能配置规则:在eslintrc.js中,你可以指定ESLint应该应用哪些......
  • JS-数组、函数、类与对象
    JS进阶数组数组可以存放任意类型的元素letarr=['小胖',12,true,28.9];console.log(arr,arr.length);增arr[4]='newValue';改arr[4]='changedValue';删不会改变数组的长度,使用undefined赋值deletearr[4];查console.log(arr[4]);//undefined多......
  • 基于node.js+vue机房设备管理系统的研究与实现(开题+程序+论文)计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于机房设备管理系统的研究,现有研究主要以设备的基础监控和简单维护为主[1][2] 。专门针对涵盖用户管理、机房预约、设备借用归还、设备报修换新以及......
  • 基于node.js+vue基于Android的帆林助农App设计与实现(开题+程序+论文)计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着信息技术的快速发展,移动应用在各个领域得到了广泛的应用。在助农领域,关于农业信息化的研究,现有研究主要以网页端的信息服务为主,专门针对Android平台......
  • 基于node.js+vue基于Android的罗宾逊R22零部件图纸检索系统(开题+程序+论文)计算机毕业
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景在航空领域,罗宾逊R22直升机是一款广泛应用的机型。关于飞机零部件图纸的管理与检索方面,现有研究多集中于大型客机或通用飞机整体的文档管理系统,专门针对罗宾......
  • 基于node.js+vue淮阴工学院研究生招生管理系统(开题+程序+论文)计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景随着高等教育的发展,研究生招生工作变得日益复杂和重要。现有的研究生招生管理系统大多集中在综合性大学,针对地方高校如淮阴工学院的专门招生管理系统研究相......
  • JSON文件转YOLO文件示例
    文章目录前言一、步骤指南二、代码实现1.类别名称到ID的映射2.边界框转换函数3.JSON解码函数4.主程序前言将JSON标注文件转换为YOLO格式通常涉及从JSON文件中提取图像尺寸、对象类别和边界框坐标,并将这些信息格式化为YOLO格式所需的格式。YOLO格式通常要求每行包含......
  • vue+three.js渲染3D模型
    安装three.js:npminstallthree页面部分代码:<divstyle="width:100%;height:300px;position:relative;"><divstyle="height:200px;background-color:white;width:100%;position:absolute;top:0;"><divid="......
  • react.js中useMemo和useEffect的区别
    1、当messages发生变化时执行scrollToBottom方法useEffect(()=>{scrollToBottom();},[messages]);constscrollToBottom=()=>{//页面滚动到底部messagesEndRef.current?.scrollIntoView({behavior:"smooth"});}以上例子中,useEffect可以用useMemo代替吗?不可......
  • gin json binding 参数验证
    验证器说明示例-忽略字段binding:"-"required必填字段binding:“required”min最小长度binding:“min=10”max最大长度binding:“max=10”|或binding:"rgbstructonly如果有嵌套,可以决定只验证结构体上的binding:“structonly”omite......