刷題96—樹(三)

149.二叉樹的所有路徑

題目鏈接
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/binary-tree-paths
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

題目描述
給定一個二叉樹,返回所有從根節點到葉子節點的路徑。

說明: 葉子節點是指沒有子節點的節點。

示例:

輸入:

1
/
2 3

5

輸出: [“1->2->5”, “1->3”]

解釋: 所有根節點到葉子節點的路徑爲: 1->2->5, 1->3

題目分析

  1. 遞歸遍歷左右子樹;
  2. 當左子樹和右子樹都爲空的時候,說明遍歷到葉子節點,將路徑存入數組;
  3. 非葉子節點加"->"。
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {string[]}
 */
var binaryTreePaths = function(root) {
    let arr = [];
    if(root){
        rode(root,null);
    }
    return arr;
 
    function rode(root, link){
        let nextlink = link ? link + "->" + root.val:root.val+"";
        if(root.left == null && root.right == null) arr.push(nextlink);
        else{
            if(root.left) rode(root.left,nextlink);
            if(root.right) rode(root.right,nextlink);
        }
    }
};
  

150.從根到葉的二進制數之和

題目鏈接
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/sum-of-root-to-leaf-binary-numbers
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

題目描述
給出一棵二叉樹,其上每個結點的值都是 0 或 1 。每一條從根到葉的路徑都代表一個從最高有效位開始的二進制數。例如,如果路徑爲 0 -> 1 -> 1 -> 0 -> 1,那麼它表示二進制數 01101,也就是 13 。

對樹上的每一片葉子,我們都要找出從根到該葉子的路徑所表示的數字。

以 10^9 + 7 爲模,返回這些數字之和。

示例:

輸入:[1,0,1,0,1,0,1]
輸出:22
解釋:(100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22

提示:

樹中的結點數介於 1 和 1000 之間。
node.val 爲 0 或 1 。

題目分析

  1. 遞歸遍歷左右子樹;
  2. 當左子樹和右子樹都爲空的時候,說明遍歷到葉子節點,求和;
  3. 每一個節點上的數字轉換爲10進制並加到下一個節點上。
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
var sumRootToLeaf = function(root) {
    let sum = 0;
    if(root){
        rode(root,0);
    }
    return sum % (Math.pow(10, 9) + 7);
    function rode(root,link){
        let nextlink = link * 2 + root.val;
        if(root.left == null && root.right == null){
            sum += nextlink;
        }else{
            if(root.left) rode(root.left,nextlink);
            if(root.right) rode(root.right,nextlink);
        }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章