Learn More →
Learn More →
You are given the root of a binary tree containing digits from 0
to 9
only.
Each root-to-leaf path in the tree represents a number.
1 -> 2 -> 3
represents the number 123
.Return the total sum of all root-to-leaf numbers. Test cases are generated so that the answer will fit in a 32-bit integer.
A leaf node is a node with no children.
Example 1.
Learn More →
Input: root = [4,9,0,5,1]
Output: 1026
Explanation:
The root-to-leaf path 4->9->5 represents the number 495.
The root-to-leaf path 4->9->1 represents the number 491.
The root-to-leaf path 4->0 represents the number 40.
Therefore, sum = 495 + 491 + 40 = 1026.
本題的目的是把 tree 從 root 到 leaf 看成一個數字然後把每個 root 到 leaf 形成的數字加總起來。
下面為完整的程式碼:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int dfs(TreeNode* node, int num) {
if (!node)
return 0;
num = 10 * num + node->val;
if (!node->left && !node->right) {
return num;
}
return dfs(node->left, num) + dfs(node->right, num);
}
int sumNumbers(TreeNode* root) {
return dfs(root, 0);
}
};
我們可以用 DFS 的方法來解,從 root 一路到 leaf,我們要做的就是把當前走訪的 node 加上前面一路累加起來的結果,也就是說假設到當前 node 為止前面累加起來的數字是 num
則 DFS 走訪的當前的 node 會把 num
累加為 num = num * 10 + node->val
,然後再看看有沒有下一個 node 或者當前的 node 就是 leaf,若為 leaf 則回傳當前的 num
否則繼續做 DFS。
而最後 DFS 要回傳的是把當前 node 往左右 DFS 回傳的結果相加起來,如此我們就可以把所有 root 到 leaf 的數字加總。
另外我們也要防止當一開始做 DFS 的時候就已經沒有 node,若是這種情況則我們就直接回傳 0。
時間複雜度上,我們要走訪所有的 node 所以複雜度為
空間複雜度上,我們需要存 dfs
的函式 stack,複雜度為
為一描述所有可計算的函式的數學模型,也就是此模型可計算所有演算法上可計算的問題。
Jun 25, 2024宇宙論時期
Mar 31, 2024結果不確定的實驗、現象、情況的量化
Nov 25, 2023希臘自然哲學發展至西元前 5 世紀中葉,已逐漸喪失獨創性,大多重複先前已經定型的自然哲學理論。哲學思維轉向語言、文法、修辭、知識、法律、歷史、習俗、倫理、宗教、音樂等人存在本身的問題。 詭智學派 (辯士學派) (Sophist) 世襲制度結束,民主制度對於法律、演講等的需要,使得詭智學派的興起。其主要在文法修辭討論,為教師教人如何在法庭勝訴,在政壇上發揮雄辯才華。 詭智學派一方面想反對威權式的規範性概念,另一方面還要接受道德的底線,所以衍伸出道德的直覺。他們在打破傳統,並著重在主觀權力之中,但抹煞客觀的權力。 詭智學派是古希臘地一個懷疑主義,懷疑主義是哲學討論的重要核心。 宇宙論時期哲學家在探討知識的價值時有各式不同的觀點,有的是唯物主義、有的是變動等等。這衍伸出一個問題: 同樣的知識同樣的真理卻有不同的觀點,因此有人開始探討最核心的問題不是知識到底是什麼,而是知識本身到底有沒有固定的價值。詭智學派開始問說到底有沒有知識,如果有那為什麼答案一大堆,如果沒有那我們說什麼知識就是什麼 -- 【知識的本身是空的,一切都是說出來的。】
Nov 20, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up