二叉树中和为某一值的路径
二叉树中和为某一值的路径
http://www.nowcoder.com/questionTerminal/b736e784e3e34731af99065031301bca
先码上,回头学习 其他人的做法
其实就是bianli那一个函数比较重要
class Solution { public: struct vecsort { int index; int size; inline bool operator< (const vecsort &v) { return size>v.size; } }s; int i=0; vector<vector<int> > res; vector<int> ress; vector<vector<int> > FindPath(TreeNode* root,int expectNumber) { //重新对size排下顺序 vector<vector<int>> temp; vector<vecsort> vec; bianli(root,expectNumber); for(int i=0;i<res.size();i++) { s.index=i; s.size=res[i].size(); vec.push_back(s); } sort(vec.begin(),vec.end()); for(int i=0;i<vec.size();i++) { temp.push_back(res[i]); } return temp; } //就一个核心算法,前边的都是对vector排序的 void bianli(TreeNode* root,int expect) { if(root==NULL) return; if(root->left==NULL && root->right==NULL && expect==root->val) { ress.push_back(root->val); res.push_back(ress); ress.pop_back(); return ; } if(expect<root->val) //剪枝 return ; ress.push_back(root->val); bianli(root->left,expect-root->val); bianli(root->right,expect-root->val); ress.pop_back(); return ; } };