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

4029 ワード

258.Add Digits
Digit root数本の問題
/**
 * @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を加えると、10桁を1とし、皆さんは1を減らすことが分かります.したがって、10人のプラスのビットと同じです.もし进位があるならば、つまり10位の上で9で、进位の后で10位は0になって、百位は1をプラスすることができて、道理は1つの桁と9をプラスするのが同じです.
 2.9どの数字に乗っても、数字の根は9です.
      同じ小学校の時に掛け算をする時、私達は一桁の数を計算して9に乗る時、10本の指を並べて、何本かに乗って第数本の指を曲げて、前後の指の個数はその結果です.その数字の根はいつも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]
      この問題は二叉樹の深さの計算を調べて、遍歴を使って完成して、下の階のreturn 0から絶えず+1から初期の位置まで計算を完成します.
 
226.Invert Binary Tree
テーマの中のこの言葉を説明して笑いました. Google:90%of our enginers use the software you wrote、but you can't invert a binary tree on a white board 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
};
 
【注】この問題は上の二叉の深さの問題と似ています.すぐにできます.何も言いません.