leetcode Day46 剑指专项 46-50

110 阅读1分钟

剑指 Offer II 046. 二叉树的右侧视图

var rightSideView = function(root) {
    if(!root){
        return []
    }
    let res=[]
    let queue=[root]
    while(queue.length){
        let l=queue.length
        let cur=[]
        for(let i=0;i<l;i++){
            let node=queue.shift()
            cur.push(node.val)
            if(node.left){
                queue.push(node.left)
            }
            if(node.right){
                queue.push(node.right)
            }
        }
        res.push(cur[cur.length-1])
    }
    return res
};

剑指 Offer II 047. 二叉树剪枝

var pruneTree = function(root) {
    if(!root){
        return root
    }
    root.left=pruneTree(root.left)
    root.right=pruneTree(root.right)
    return (root.left || root.right || root.val===1)?root:null
};

剑指 Offer II 049. 从根节点到叶节点的路径数字之和

const dfs=(root,pre)=>{
    if(!root){
        return 0
    }
    let sum=pre*10+root.val
    if(!root.left && !root.right){
        return sum
    }else{
        return dfs(root.left,sum)+dfs(root.right,sum)
    }
}
var sumNumbers = function(root) {
    return dfs(root,0)
};

剑指 Offer II 050. 向下的路径节点之和

var pathSum = function(root, targetSum) {
    if(!root){
        return 0
    }
    let res=rootSum(root,targetSum)
    res+=pathSum(root.left,targetSum)
    res+=pathSum(root.right,targetSum)
    return res
};
const rootSum=(root,targetSum)=>{
    if(!root){
        return 0
    }
    let res=0
    let val=root.val
    if(val===targetSum){
        res++
    }
    res+=rootSum(root.left,targetSum-val)
    res+=rootSum(root.right,targetSum-val)
    return res
}