ルートノードとバイナリツリーの整数を入力し、バイナリツリーのノード値の合計が入力整数であるすべてのパスを出力します。ポップな説明。

/ * 
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)。
};

 

 

おすすめ

転載: www.cnblogs.com/littleswan/p/12706430.html