LeetCode 101.對稱二叉樹 - JavaScript

題目描述:給定一個二叉樹,檢查它是不是鏡像對稱的。javascript

題目分析

下面這種二叉樹就是鏡像對稱的,符合題目要求:java

1
   / \
  2   2
 / \ / \
3  4 4  3

解法 1:遞歸檢查

根據題目「對稱」的定義,遞歸過程以下:git

  • 對稱節點的 val 是否相同
  • 依次遞歸對稱節點的 left1 和 right二、right1 和 left2(結合上面的例子更好理解)

代碼實現以下: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

更多資料

相關文章
相關標籤/搜索