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

相关文章
相关标签/搜索