題目描述:給定一個二叉樹,檢查它是不是鏡像對稱的。javascript
下面這種二叉樹就是鏡像對稱的,符合題目要求:java
1 / \ 2 2 / \ / \ 3 4 4 3
根據題目「對稱」的定義,遞歸過程以下:git
代碼實現以下:github
// ac地址:https://leetcode-cn.com/problems/symmetric-tree/ // 原文地址:https://xxoo521.com/2020-02-16-symmetric-tree/ /** * @param {TreeNode} root * @return {boolean} */ var isSymmetric = function(root) { if (!root) return true; return __isSymmetric(root.left, root.right); }; function __isSymmetric(t1, t2) { if (!t1 && !t2) return true; if (!t1 || !t2) return false; return ( t1.val === t2.val && __isSymmetric(t1.left, t2.right) && __isSymmetric(t1.right, t2.left) ); }
時間複雜度是 O(N),空間複雜度是 O(N)。由於最壞狀況下,樹是線性的。code