剑指Offer——对称的二叉树(JS实现) |刷题打卡

简介: 剑指Offer——对称的二叉树(JS实现) |刷题打卡

前言

掘金团队号上线,助你 Offer 临门! 点击 查看详情

题目描述

image.png

解题思路

  • 这道题属于二叉树的问题
  • 本题的核心在于通过层次遍历,来将一层的元素的值和这一层元素进行反转之后,相同下标的元素是否相同,只要相同,则说明是对称二叉树,反之则不是对称二叉树。

解题代码

var isSymmetric = function(root) {
    if (!root) return true;
    let flag = true;
    let queue = [root];
    while (queue.length !== 0) {
        const temp = [];
        for (let v of queue) {
            temp.push(v);
        }
        let copy = [];
        for (let v of temp) {
            if (v === null) {
                copy.push(null);
                continue;
            }
            copy.push(v.val);
        }
        copy = copy.reverse();
        for (let i = 0; i < temp.length;i++) {
            if (temp[i] === null) {
                if (temp[i] !== copy[i]) {
                    flag = false;
                    return flag;
                } else {
                    continue;
                }
            }
            if (temp[i].val !== copy[i]) {
                flag = false;
                return flag;
            }
        }
        queue = [];
        for (let v of temp) {
            if (v === null) {
                queue.push(null);
                queue.push(null);
                continue;
            }
            queue.push(v.left);
            queue.push(v.right);
        }
        const test = queue.every((value) => {
            return value === null
        }) 
        if (test === true) break;
    }
    return flag;
};

总结(本题给我们的启示思路)

  • 思路一:如何进行层次遍历。
  • 思路二:同一层的元素通过逆转后,判断相同下标的元素的值是否相同,来判断是否是对称二叉树。
相关文章
|
3月前
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
5月前
|
算法 JavaScript
JS 【详解】二叉树(含二叉树的前、中、后序遍历技巧和算法实现)
JS 【详解】二叉树(含二叉树的前、中、后序遍历技巧和算法实现)
53 0
|
7月前
|
JavaScript Java 测试技术
基于微信小程序的刷题系统的+springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的刷题系统的+springboot+vue.js附带文章和源代码设计说明文档ppt
65 1
|
7月前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
7月前
|
存储 算法 JavaScript
JS算法-二叉树的后序遍历
JS算法-二叉树的后序遍历
|
7月前
|
算法 JavaScript
JS算法-二叉树的前序遍历
JS算法-二叉树的前序遍历
|
7月前
|
算法 JavaScript
JS算法-二叉树的右视图
JS算法-二叉树的右视图
|
7月前
|
算法 JavaScript
JS算法-二叉树展开转为链表
JS算法-二叉树展开转为链表
|
Web App开发 JavaScript 前端开发
|
28天前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
25 1
JavaScript中的原型 保姆级文章一文搞懂