JavaScript實現-LeetCode刷題-【對稱二叉樹】-第101題!!!

帥帥鄔同學發表於2020-12-26

題目:

LeetCode題目連結

題目截圖:

LeetCode刷題

解題步驟:

符合分而治之的特點
1.分:獲取兩個樹的左子樹和右子樹
2.解:遞迴地判斷樹1的左子樹和樹2的右子樹是否映象,樹1的右子樹和樹2的左子樹是否映象
3.合:如果上述都成立,且根節點值也相同,兩個樹就映象

程式碼:

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isSymmetric = function (root) {
  if (!root) return true; // 如果是空樹,則判斷為是映象的
  const isMirror = (l, r) => {
    if (!l && !r) return true;  // 遍歷到了葉子節點就是遞迴的終點
    if (l && r && l.val === r.val
      && isMirror(l.left, r.right) &&
      isMirror(l.right, r.left)
    ) return true;
    return false;
  };
  return isMirror(root.left, root.right);
};

時間複雜度分析:

時間複雜度是O(n),n是樹的節點個數,因為遍歷到了所有的節點

空間複雜度分析:

空間複雜度是O(n),記住一點:凡是涉及到二叉樹的空間複雜度,如果是遞迴的話,
就是O(n),因為最壞的情況下,樹的高度等於樹的節點個數

怎麼樣,是不是很簡單,你學會了嗎?

LeetCode刷題

如果這篇文章能夠幫助到您,希望您不要吝惜點贊??和收藏??,您的支援是我繼續努力的動力 ??!!!

相關文章