クラス解決{ パブリック: ツリーノード * reConstructBinaryTree(ベクトル< 整数 >予め、ベクトル< INT > VIN){ int型 vinlen = vin.size()。 もし(vinlen == 0 ) リターンNULL; ベクトル < 整数 > pre_left、pre_right、vin_left、vin_right。 ツリーノード *ヘッド= 新しいツリーノード(PRE [ 0 ])。 INT GEN = 0 ; 以下のための(int型 I = 0; I <vinlen; I ++ ) { IF(VIN [I] ==事前[ 0 ]) { ゲン = I; BREAK ; } } のための(INT I = 0 ; I <ゲン; I ++ ) { vin_left.push_back(VIN [私は]); // 前順トラバース配列左サブツリー pre_left.push_back([I +を事前1。 ]); // 前順トラバース配列左サブツリー前 } ため(INT I = +ジェン1。 ; I <vinlen; I ++ ) { vin_right.push_back(VIN [I]); // 前順トラバーサル順序右サブツリー pre_right.push_back([I]をPRE); // 前順走査シーケンス右サブツリー前 } ヘッド - > =左(pre_left、reConstructBinaryTreeをvin_left); 頭 - >右= reConstructBinaryTree(pre_right、vin_right); 戻りヘッド; } }。