/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function isSymmetrical(pRoot) {
// write code here
// 迭代解法
if (pRoot == null) return true;
const queue = [];
queue.push(pRoot);
queue.push(pRoot);
while (queue.length) {
const root1 = queue.shift();
const root2 = queue.shift();
if (!root1 && !root2) continue;
if (!root1 || !root2 || root1.val !== root2.val) {
return false;
}
queue.push(root1.right);
queue.push(root2.left);
queue.push(root1.left);
queue.push(root2.right);
}
return true;
// // 递归解法
// if (pRoot == null) return true;
// const DFS = (root1, root2) => {
// if (!root1 && !root2) return true;
// if (!root1 || !root2 || root1.val !== root2.val) {
// return false;
// }
// return DFS(root1.left, root2.right) && DFS(root1.right, root2.left);
// };
// return DFS(pRoot, pRoot);
}
module.exports = {
isSymmetrical: isSymmetrical,
};