/ * タイトル: 入力整数バイナリツリー、および整数のためのリーフノードにルートノードからすべてのパスを印刷します。 * / / * 思考: 前順、深さトラバーサル。 ルートから開始し、記録パス、リーフノードに横断し、所望の値が出力される場合。 あなたはすべての葉ノードへのパスを通過するまで、フォールバック・ノードは、次のリーフノードを探しています。 * / の#include <iostreamの> する#include <string.hの> する#include <アルゴリズム> の#include <cmath> する#include <stdio.hに> する#include <ベクトル> の#include <スタック> の#include <キュー> 名前空間STDを使用して、 ツリーノード{構造体 ヴァルINT; ツリーノード*左構造体; 右*ツリーノードをストラクト、 ツリーノード(INT X): (NULL)左ヴァル(X)、右(NULL){ } }; ベクトル<ベクトル<INT >> RESと、 ボイドFindPathCore(ツリーノード*根、INT expectNumber、INT currentNumber){ path.push_back(root->ヴァル) currentNumber + = root->ヴァル。 ブール値のisLeaf =(root->は== nullptr && root->右== nullptrを残しましたか)?正誤; IF(currentNumber == expectNumber &&のisLeaf){ res.push_back(パス)。 } IF(root->左= nullptr!){ FindPathCore(root->左、expectNumber、currentNumber)。 } (root->右= nullptr!){もし FindPathCore(root->右、expectNumber、currentNumber)。 } path.pop_back()。 } ベクトル<ベクトル<整数>> FindPath(ツリーノード*根、 ベクトル<整数>パス; int型currentNumber = 0; FindPathCore(根、expectNumber、currentNumber)。 解像度を返します。 }