IMWeb提升营Day4 | 训练题24:二叉树中和为某一值的路径

来源:互联网 发布:java md5 32大加密 编辑:程序博客网 时间:2024/06/05 10:46

题目描述

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

思路

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :            val(x), left(NULL), right(NULL) {    }};*//* * 思路:DFS+剪枝 */class Solution {public:    vector<vector<int> > FindPath(TreeNode* root, int expectNumber) {        int sum = 0;        if(root != NULL){            dfs(root,expectNumber,sum);        }        return res;    }private:    vector<vector<int> > res;    vector<int> trace;      void dfs(TreeNode* root, int expectNumber, int sum) {        sum += root->val;        trace.push_back(root->val);        if(sum == expectNumber && root->left == NULL && root->right == NULL) {            res.push_back(trace);        }else if(sum > expectNumber){            return;        }        if(root->left != NULL) dfs(root->left,expectNumber,sum);        if(root->right != NULL) dfs(root->right,expectNumber,sum);        trace.pop_back();    }};
阅读全文
0 0
原创粉丝点击