バイナリツリートラバーサル - 34-オファー顔の質問には、安全性とバイナリツリーパス一定の価値を証明します

/ * 
タイトル:
	入力整数バイナリツリー、および整数のためのリーフノードにルートノードからすべてのパスを印刷します。
* / 
/ * 
思考:
	前順、深さトラバーサル。
	ルートから開始し、記録パス、リーフノードに横断し、所望の値が出力される場合。
	あなたはすべての葉ノードへのパスを通過するまで、フォールバック・ノードは、次のリーフノードを探しています。
* / 
の#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)。
    解像度を返します。
}

   

おすすめ

転載: www.cnblogs.com/buaaZhhx/p/11953711.html