首页 > 编程语言 >javascript-代码随想录训练营day15

javascript-代码随想录训练营day15

时间:2022-12-08 16:01:53浏览次数:71  
标签:right cur javascript 随想录 day15 let root stack left

226.翻转二叉树

题目链接:

https://leetcode.cn/problems/invert-binary-tree/

题目描述:

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

思路:

层次遍历二叉树,交换每个节点的左右子节点

代码:

var invertTree = function(root) {
    let queue = []
    if(root) queue.push(root)
    while(queue.length){
        let size = queue.length
        for(let i = 0; i < size; i++){
            let cur = queue.shift()
            let temp = cur.left
            cur.left = cur.right
            cur.right = temp
            cur.left && queue.push(cur.left)
            cur.right && queue.push(cur.right)
        }
    }
    return root
};

101.对称二叉树

题目链接:

https://leetcode.cn/problems/symmetric-tree/

题目描述:

给你一个二叉树的根节点 root , 检查它是否轴对称。

输入:root = [1,2,2,3,4,4,3]
输出:true

思路:

将根节点的左右子节点加入到栈中,每次循环从栈中弹出两个进行判断,再将对称的子节点两两压入栈中。多次循环直到栈为空,表示遍历完成。

代码:

var isSymmetric = function(root) {

    if(root.left && !root.right) return false
    if(root.right && !root.left) return false
    if(!root.left && !root.right) return true
    let stack = [root.left,root.right]
    while(stack.length){
        let right = stack.pop()
        let left = stack.pop()
        if (!left && !right) { 
            continue;
        }
        if ((!left || !right || (left.val != right.val))) {
            return false;
        }
        stack.push(left.left);  
        stack.push(right.right); 
        stack.push(left.right);  
        stack.push(right.left); 
    }
    return true;  
};

标签:right,cur,javascript,随想录,day15,let,root,stack,left
From: https://www.cnblogs.com/endmax/p/16966334.html

相关文章

  • javascript-代码随想录训练营day14
    递归的三要素:递归函数的参数和返回值单层递归的逻辑终止条件144.二叉树的先序遍历题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/题目描......
  • JavaScript入门⑧-事件总结大全
    JavaScript入门系列目录JavaScript入门①-基础知识筑基JavaScript入门②-函数(1)基础{浅出}JavaScript入门③-函数(2)原理{深入}执行上下文JavaScript入门④-万物皆......
  • 通俗的英文指南——Javascript的原型
    ​​http://www.w3cplus.com/js/a-plain-english-guide-to-javascript-prototypes.html​​​当我开始学习JavaScript的对象模型时,第一反应就是难以......
  • 【代码随想录】第8章 二叉树
    第8章二叉树1.二叉树理论基础二叉树种类(1)满二叉树(2)完全二叉树(3)二叉搜索树或称二叉查找树中序遍历是递增序列(4)平衡二叉搜索树二叉树的存储方式可以链式存储,也可以顺序存......
  • 四、程咬金——JavaScript基础
     一、前言Ajax,异步JavaScript和XML,前面已经解释过,所以Ajax的学习还包含JavaScript和XML,这里我们先看JavaScript,而JavaScript实际上又是包含JavaScript语法和HTMLDOM即文档......
  • 《悟透javascript》学习笔记
    《悟透javascript》学习笔记 一、         前言 二、         回归简单、基本类型 三、         表演、似类却不是类 四、      ......
  • 《悟透javascript》学习笔记:X、深入继承
    引言      JavaScript不是按面向对象的思想设计的程序语言,所以它不具备像现有的面向对象的语言那样的功能,但是面向对象的思想是如此的深入人心,以至于JavaScript也削......
  • 再读《悟透javascript》之五、五子棋
    前言     五子棋是个很有趣的游戏,在用javascript开发之后,我发现其实ai算法才是最难的,这里的ai算法是直接借鉴自其它的ai算法。  代码如下:<htmlxmlns="http://www.w3......
  • 《悟透javascript》学习笔记:四、函数的魔力
    引言 JavaScript的代码就只有function一种形式,function就是函数的类型。也许其他编程语言还有procedure或method等代码概念,但在JavaScript里只有function一种形......
  • 再读《悟透javascript》之四、贪吃蛇
    前言     贪吃蛇是个很简单的小游戏,但是却很有趣,下面是我用JavaScript写的一个贪吃蛇的代码:  代码如下:   <htmlxmlns="http://www.w3.org/1999/xhtml"><headr......