149.二叉樹的所有路徑
題目鏈接
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/binary-tree-paths
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
題目描述
給定一個二叉樹,返回所有從根節點到葉子節點的路徑。
說明: 葉子節點是指沒有子節點的節點。
示例:
輸入:
1
/
2 3
5
輸出: [“1->2->5”, “1->3”]
解釋: 所有根節點到葉子節點的路徑爲: 1->2->5, 1->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 。
題目分析
- 遞歸遍歷左右子樹;
- 當左子樹和右子樹都爲空的時候,說明遍歷到葉子節點,求和;
- 每一個節點上的數字轉換爲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);
}
}
};