/* * function TreeNode(x) { * this.val = x; * this.left = null; * this.right = null; * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pRoot TreeNode类 * @return bool布尔型 */ function isSymmetrical(root) { if (!root) { return true; } return bfsCheck(root.left, root.right); } function bfsCheck(node1, node2) { const queue = [node1, node2]; while (queue.length) { const n1 = queue.pop(); const n2 = queue.pop(); if (!n1 && !n2) continue; if (!n1 || !n2 || n1.val !== n2.val) return false; queue.push(n1.left); queue.push(n2.right); queue.push(n1.right); queue.push(n2.left); } return true; } function dfsCheck(node1, node2) { if (!node1 && !node2) return true if (!node1 || !node2) return false return ( node1.val === node2.val && dfsCheck(node1.left, node2.right) && dfsCheck(node1.right, node2.left) ); } module.exports = { isSymmetrical: isSymmetrical, };