剑指offer:二叉树中和为某一值的路径

二叉树中和为某一值的路径

http://www.nowcoder.com/questionTerminal/b736e784e3e34731af99065031301bca

1.二叉树的问题一般是递归解决
路径问题的话:1:定义一个全局的答案变量
2:定义每一轮的搜索路径path变量
2.递归函数中之间先判断结束条件,如没有左右儿子结点而且数字减到0;将这条路径加入到答案中去,如果不满足,则跳入到下一层中!递归函数可以是bool类型,也可以是void类型。
3.在一条path添加完后,记得还原现场,path.pop_back.
代码如下:

/*
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>> ans;
    vector<int> path;
    vector<vector<int> > FindPath(TreeNode* root,int sum) {
        dfs(root,sum);
        return ans;
    }

    void dfs(TreeNode* root,int sum){
        if(!root) return ;
        path.push_back(root->val);
        sum-=root->val;
        if(!root->left && !root->right && !sum) ans.push_back(path);
        dfs(root->left,sum);
        dfs(root->right,sum);
        path.pop_back(); //恢复现场
    }
};
全部评论

相关推荐

05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务