vlambda博客
学习文章列表

BFC 普解对称二叉树

为啥是普解,学会 BFC 这个题目真的 10 分钟轻轻松松拿下,没有悬念。如果你还不了解 BFC,可以看这篇文章 

题目

LeetCode 101

分析

BFS 解法,使用一个队列缓存当前层的所有节点,拿到节点后比较正序和 reverse 之后的是否相等。如果中间不相等,直接返回。然后一直遍历直到遍历完所有节点。

实现

BFS 遍历二插树的每一层,然后比较该层的节点值是否镜像相等。如果你还不知道如何通过 BFC 遍历二叉树

/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {boolean} */var isSymmetric = function(root) { //递归结束条件 // 1.没有子节点,且前面的节点都是堆成的 // 2.有子节点,但出现了不对称的情况 if(!root) return true; let list = [root]; let flag = true; const dp = (list) => { let tmp = [...list].map(item => item ? (item.val != null ? item.val :'null') : 'null'); if(tmp.join('') != tmp.reverse().join('')) { flag = false return; } while(list.length) { let len = list.length; for(let i = 0; i < len; i++) { const node = list.shift(); if(node) { list.push(node.left); list.push(node.right); } } dp(list) }  } dp(list); return flag;};

「 一枚前端学习小透明,努力学习前端知识,同时分享自己对生活的一些思考,欢迎一起讨论交流。如果我的文章对你有帮助,请点个赞,会非常感恩你的鼓励。完」