LeetCode 113: Path Sum II 二叉树遍历

来源:互联网 发布:access如何查询数据 编辑:程序博客网 时间:2024/06/07 18:45

博客转载请注明地址:http://blog.csdn.net/sunliymonkey/article/details/48164399

题目描述

给一棵二叉树,每个节点带有数字,寻找出从根到叶子节点所有的路径,使得路径上的数字之和为给出的sum。

Given the below binary tree and sum = 22,

          5         / \        4   8       /   / \      11  13  4     /  \    / \    7    2  5   1

return

[   [5,4,11,2],   [5,8,4,5]]

考察点

  1. 树的遍历
  2. vector的使用:push_back,pop_back

陷阱

Code

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int>>ret;    vector<int>path;    void dfs(TreeNode* x, int sum){        if(x == NULL)            return;        path.push_back(x->val);        sum -= x->val;        if(sum == 0 && !x->left && !x->right){            ret.push_back(path);        }        dfs(x->left, sum);        dfs(x->right, sum);        path.pop_back();    }    vector<vector<int>> pathSum(TreeNode* root, int sum) {        dfs(root, sum);        return ret;    }};
0 0