剑指offer--31.二叉树中和为某一值的路径
深度优先搜索
----------------------------------------------------------------------------------------------------------------
时间限制:1秒 空间限制:32768K 热度指数:317971
题目描述
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
/* 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> > paths; vector<int> tmp; vector<vector<int> > FindPath(TreeNode* root,int num) { if(root==NULL) return paths; tmp.push_back(root->val); if((num-root->val)==0 && root->left==NULL && root->right==NULL) { paths.push_back(tmp); } FindPath(root->left,num-root->val); FindPath(root->right,num-root->val); if(tmp.size()!=0) tmp.pop_back(); return paths; } };