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