# 101. Symmetric Tree ## 題目概要 判斷一個二元樹是否為對稱二元樹。 ![](https://i.imgur.com/8i92onJ.png) ## 解題技巧 - 根據規律可得知,每一層都會先判斷左節點的左子節點和右節點的右子節點是否相同,接著判斷左節點的右子節點和右節點的左子節點是否相同。 - 每層都是一樣的規律,所以可以利用遞迴來解。 ## 程式碼 ```javascript= /** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */ /** * @param {TreeNode} root * @return {boolean} */ var compare = (node1, node2) => { if (node1 == null && node2 == null) return true; // 兩節點都空也是對稱 if (node1 == null || node2 == null) return false; return node1.val == node2.val && compare(node1.left, node2.right) && compare(node1.right, node2.left); } var isSymmetric = function(root) { if (!root) return true; // 沒有根節點也是對稱 return compare(root.left, root.right); }; ``` ![](https://i.imgur.com/vu9iZfC.png)