////////////////////////////////////////////////// ///////////////////////////////////
// 6.タイトル24バイナリ検索ツリーの後順トラバーサル
/シーケンスは、バイナリ検索ツリートラバーサルの結果ではありません後/整数配列を入力し、配列が決定されました!!!
/ *
8
/ \
610
/ \ / \
57911
入力配列:{5、7、6、9、11、10、8}
右> - -左//>で
後順トラバーサル:576911108の
機能:
1.最後の要素がルートノードである
2がルートノードの左部分木よりも小さい、ルートノードは、右部分木よりも大きく、
* /
//
BOOL BinaryTreePostTraval(INT aiArray []、int型ILENを) { IF(== NULL ILEN aiArray || <= 0 ) { リターン falseに; } int型 iRootVal = aiArray [ILEN - 1 ]; INT lLeft = 0 ; // 1左サブツリーのルートよりも小さい ため(; lLeft <ILEN - 。1 ; lLeft ++ ) { IF(aiArray [lLeft]> iRootVal) { BREAK ; } } // 大きいよりルートノードの2右サブツリー INT= IRight lLeft; のための(; IRight <ILEN - 1。 ; IRight ++ ) { IF(aiArray [IRight < iRootVal) { リターン falseに; } } // 3.二分探索木ではない左サブツリーを分析 BOOL bLeftが= trueに。 IF(lLeft> 0 ) { bLeft = BinaryTreePostTraval(aiArray、lLeft); } // 4.右サブツリーを分析する二分探索木ではない BOOL = BRIGHT trueに、 IF(IRight> 0 ) { 明るい = BinaryTreePostTraval(aiArray、明); } 戻り bLeft && 明るいです。 } ボイドVerifySquenceOfBSTTestFunc() { COUT << " \ n \ n --------------- VerifySquenceOfBSTTestFuncスタート--------------> " << ENDL ; INT aiArray [] = { 8、6、10、5、7、9、11 }。 INT aiArray2 [] = { 5、7、6、9、11、10、8 }; int型 ILENは= はsizeof(aiArray)/ はsizeof(int型); TRAVERSAL_ARRAY(aiArray、ILEN); // 解析アレイがソート後のバイナリ検索ツリーない BOOL BFLAG = 、BinaryTreePostTraval(aiArray ILEN); IF (BFLAG) { COUT << " TRUE " << ENDL; } 他 { COUT << " FALSE " << ENDL; } TRAVERSAL_ARRAY(aiArray2、ILEN)。 BFLAG = BinaryTreePostTraval(aiArray2、ILEN)。 もし(BFLAG) { COUT << " TRUE " << ENDL。 } 他 { COUT << " FALSE " << ENDL。 } coutの << " \ N \ N --------------- VerifySquenceOfBSTTestFunc終了--------------> " << てendl; }