力扣面试150(60/150)
8.19 101. 对称二叉树
给你一个二叉树的根节点 root
, 检查它是否轴对称。
我的思路:
BFS层次遍历,遍历两棵树,左节点等于右节点
我的代码:
var isSymmetric = function(root) {// 新建一个栈const queue = [root , root];while(queue.length > 0){let l = queue.shift();//左边的节点let r = queue.shift();//右边的节点// 进行判断// 1、如果两个都为nullif(l === null && r === null) continue;// 2、两个当中有一个为nullif(l === null || r === null) return false;// 3、左右值不相等if(l.val !== r.val) return false;// 进行层次遍历queue.push(l.left);queue.push(r.right);queue.push(l.right);queue.push(r.left);}return true;
};
总结:
这个算法使用队列来判断二叉树是否对称。它同时从根节点开始比较左右子树,将对应的左右节点成对加入队列。每次取出两个节点进行比较,如果都为null则继续;如果有一个为null或值不相等则返回false;否则继续将它们的子节点按相反顺序(左左和右右、左右和右左)加入队列。当所有节点都满足对称条件时,最终返回true。