1. 程式人生 > >二叉樹中和為某一值的路徑

二叉樹中和為某一值的路徑

one 結點 col val exp fff return back 節點

輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。

思路:深搜(DFS)

struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};

class Solution {
public:
    vector<vector<int
>>res; vector<int> path; void DFS(TreeNode*root,int num) { if(root==NULL) return; path.push_back(root->val); if(!root->left&&!root->right&&num==root->val)//根節點的左右子樹沒有,且根節點的值等於num(所求的值),把向量path放入res中即可 res.push_back(path);
else//左右子樹存在 { if(root->left) DFS(root->left,num-root->val); if(root->right) DFS(root->right,num-root->val); } path.pop_back();//相當於回退 ,彈出去 } vector<vector<int> > FindPath(TreeNode* root,int
expectNumber) { DFS(root,expectNumber); return res; } };

二叉樹中和為某一值的路徑