129 求根到葉子節點數字之和

2021-08-23 12:26:10 字數 612 閱讀 7920

有一篇講得非常好的:

先說一下一開始的錯誤,首先是在遇到葉子節點以後企圖將temp clear調,這樣是完全不對的;因為temp全域性的,清空temp會讓除了該葉子節點以外的前面的節點也清除掉。這樣比如說訪問完某個節點的左子樹以後,再訪問該節點的右子樹時,根節點已經不在裡面了。所以,不行。

考慮到上面那個錯誤以後,我又想那既然不能直接全部clear,那我在碰到葉子節點以後給他pop_back不就行了。比如下面這個例子,但是實際上提交完以後還是不行,分析一下,發現當我們遍歷完根節點4的左子樹的時候,準備遍歷0時,這時temp存的不僅是根節點4,還有9,所以我們發現了新的問題。這是個問題,即我們不能明確彈出足夠量的資料。

基於這些問題,調整思路,如果想繼續使用vector來儲存每個「數」的方式。就需要不把vector作為全域性變數,而是作為dfs函式的引數進行處理,這樣就能實現遞迴呼叫與遞迴返回時的狀態的同步,注意,這是非常重要的思想和技巧,即如果要求遞迴的呼叫情況和對應的變數狀態同步起來,可以考慮將該變數作為引數放入遞迴函式中。

同時還要注意這裡的vector必須使用值傳遞,不能使用&型別的位址傳遞。

129 求根到葉子節點數字之和

給定乙個二叉樹,它的每個結點都存放乙個 0 9 的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑 1 2 3 代表數字 123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1,2,3 1 2 3輸出 25 解釋 從根到葉子節點路徑...

129 求根到葉子節點數字之和

給定乙個二叉樹,它的每個結點都存放乙個 0 9 的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑 1 2 3 代表數字 123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1,2,3 1 2 3 輸出 25 解釋 從根到葉子節點路...

求根到葉子節點數字之和

給定乙個二叉樹,它的每個結點都存放乙個0 9的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑1 2 3代表數字123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1 2,3 1 2 3輸出 25解釋 從根到葉子節點路徑 1 2 代...