/ * struct TreeNode { int val; struct TreeNode *左; struct TreeNode * right; TreeNode(int x): val(x)、left(NULL)、right(NULL){ } }; * / #include <vector> #include <algorithm> class Solution { public: vector <vector <int >> res; vector <int>バッファ; static bool cmp(const vector <int>&a、const vector <int>&b) { return a.size()> b.size(); } vector <vector <int>> FindPath1(TreeNode * root、int expectNumber) { if(root == NULL)return res; buffer.push_back(root-> val); if(expectNumber-root-> val == 0 && root- { res.push_back(buffer); } if(root-> left!= NULL)FindPath(root ->左、expectNumber-root-> val); if(root-> right!= NULL)FindPath(root-> right、expectNumber-root-> val); if(buffer.size()!= 0) バッファ。 pop_back(); //押すたびに、好きなだけポップします。 // if(res.size()!= 0) return res; } vector <vector <int >> FindPath(TreeNode * root、int expectNumber) { FindPath1(root、expectNumber); //このサブ関数はフィルタリング用ですこれらのパスを 並べ替えます(res.begin()、res.end()、cmp)。 };