輸入一顆二叉樹的跟節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前)
思路分析:路徑問題從樹的根結點到葉結點,所以需要深度優先遍歷(dfs),在遞迴過程中發現當前路徑和為給定的數時,將該路徑存入vector中,再遍歷其左子樹與右子樹。
細節:1、dfs函式引數:
需要樹結點,二維陣列(最終返回值),一維陣列(路徑trace),當前需要值。
所以我們宣告dfs函式為:注意res和trace用引用傳遞
void dfs(treenode* root, vector>& res, vector& trace, int s);
2、關於dfs的函式定義:
需要先將該結點的val儲存在trace,在函式定義結尾,需要將該值從trace中pop出去(當前遞迴層結束)。
void
dfs(treenode* root, vectorint>>
& res, vector<
int>
& trace,
int s)
接下來是完整**:
vectorint>
>
findpath
(treenode* root,
int expectnumber)
void
dfs(treenode* root,
int s, vector<
int>
& trace, vectorint>>
& ret)
if(root->left)
dfs(root->left, s-root->val, trace, ret);if
(root->right)
dfs(root->right, s-root->val, trace, ret)
; trace.
pop_back()
;}
javascript 判斷是否為某個資料型別
為何不用其他方法,因為下面的寫法考慮了各種相容性。判斷是否為陣列 isarray function source 判斷是否為日期物件 isdate function o tostring.call o object date o.tostring invalid date isnan o 判斷是否為...
Python中判斷輸入內容是否為某個數字
1 valueerror invalid literal for int with base 10 得到valueerror是因為int型不能將空字串轉換為整數,說明是我在轉換之前得到了乙個空的字串,或者說字串作為引數到int檢查之前它是空的或包含字母字元而不能對其進行轉換,所以在轉換的過程 現了錯...
判斷n個數是否為連續的?
今天看了csdn社群中sungj0917提出的問題 有n個整數,有什麼好的演算法確定這n個數是連續的嗎 於是我寫了乙個o n 的演算法,當然,我用空間換時間,也就是說用了很多變數記錄,希望大家丟磚。演算法支援重複數字。思路如下 遍歷一次 目前是沒想到如何避免遍歷 在遍歷過程中做以下事 1.記錄最大m...