給定乙個二叉樹和乙個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。直接用前序遍歷至葉節點,每經過一次結點 記錄結點的值,將路徑值記錄入vector中,當遍歷到葉節點且路徑之和為sum時,將路徑vector存入二維vector中。說明: 葉子節點是指沒有子節點的節點。
示例: 給定如下二叉樹,以及目標和 sum = 22,
[ [5,4,11,2], [5,8,4,5] ]5
/ \4 8
/ / \
11 13 4
/ \ / \
7 2 5 1 返回:
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
void
findpath
(treenode* root, vectorint>>
&result,vector<
int>
&path,
int&sum,
int&pathsum)
findpath
(root-
>left,result,path,sum,pathsum)
;//遞迴遍歷左子樹
findpath
(root-
>right,result,path,sum,pathsum)
;//遞迴遍歷右子樹
pathsum-
=root-
>val;
//完成該路徑上所有檢測後,回退至上一結點
path.
pop_back()
;}};
Leetcode 1 二叉樹篇
二叉樹題目的遞迴解法可以分兩類思路 第一類是遍歷一遍二叉樹得出答案 回溯演算法核心框架 第二類是通過分解問題計算出答案 動態規劃核心框架 遇到一道二叉樹的題目時的通用思考過程是 是否可以通過遍歷一遍二叉樹得到答案?如果不能的話,是否可以定義乙個遞迴函式,通過子問題 子樹 的答案推導出原問題的答案?二...
leetcode題目 翻轉二叉樹
翻轉一棵二叉樹。示例 輸入 4 27 13 69輸出 4 72 96 31備註 這個問題是受到 max howell 的 原問題 啟發的 谷歌 我們90 的工程師使用您編寫的軟體 homebrew 但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。樹的結構 description aut...
LeetCode 二叉樹相關題目
class solution private 遞迴的方法 void inorder treenode root,vector int nodes inorder root left,nodes nodes.push back root val inorder root right,nodes 非遞迴...