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