LeetCode Javascript實現 258. Add Digits 104. Maximum Depth of Binary Tree 226. Invert Binary Tree

258. Add Digits

Digit root 數根問題node

/**
 * @param {number} num
 * @return {number}
 */
var addDigits = function(num) {
    var b = (num-1) % 9 + 1 ;
    return b;
};

//之因此num要-1再+1;是由於特殊狀況下:當num是9的倍數時,0+9的數字根和0的數字根不一樣。

 性質說明

 1.任何數加9的數字根仍是它自己。(特殊狀況num=0)

       小學學加法的時候咱們都明白,一個數字加9,就是把十位加1,各位減1。所以十位加個位的和是不變的;若是有進位,即十位上是9,那麼進位以後十位會變成0,百位會加1,道理和一個一位數加9是同樣的。

 2.9乘任何數字的數字根都是9。

      一樣是小學時學乘法時,咱們在計算一位數乘九的時候,把十隻手指頭排開,乘幾便彎下第幾隻手指頭,先後的手指個數即是那個結果。它的數字根永遠是10-1=9。多位數的化,拆分每一位數字便可。
 

104. Maximum Depth of Binary Tree

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
var maxDepth = function(root) {
    if(root===null){
        return 0;
    }
    var le = maxDepth(root.left);
    var ri = maxDepth(root.right);
    
    return 1+Math.max(le,ri);
    
};

 【注】custom test裏面的binary tree visualizer使用數組產生二叉樹,如[1,2,3,4,5]git

      這題考察二叉樹深度的計算,使用遍歷完成,從底層return0不斷+1到初始位置完成計算數組

 


226. Invert Binary Tree

題目描述裏面的這句話笑了- -: Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var invertTree = function(root) {
    if(root===null){
        return root
    }
    
    var tem = root.left;
    root.left = root.right;
    root.right = tem;
    invertTree(root.left);
    invertTree(root.right);
    
    return root
};

 

【注】這題和上面的二叉樹深度的題有點像,一下就作出來了,沒什麼好說的 this

相關文章
相關標籤/搜索