タイトル説明
整数配列を入力して、アレイは、バイナリ検索ツリーをトラバースした後決意の結果ではありません。出力がYesであれば、そうでなければ出力号 任意の2つの数の入力配列が異なっていると仮定する。
ソリューション:
その結果行きがけように、この質問は、まず、ソートされた後順の後に得られた前順を考え、その後、組換えバイナリーツリーの後に先行順走査シーケンスを使用して、必ずしも必要ではないが、ツリーのBSTの後順トラバーサル理由それは正しくないかもしれません。
したがって、後順トラバーサルに従って、直接木の左と右のサブツリーに決定されます。
1 クラスソリューション{ 2 公共: 3 ブール VerifySquenceOfBST(ベクトル< INT > 配列){ 4 もし(sequence.size()== 0)を返す 偽。 5 リターン isBST(シーケンス、0、sequence.size() - 1 )。 6 } 7 ブール isBST(ベクトル< 整数 > V、INTを L、INT R) 8 { 9 た場合(L> = R)を返す 真。 10 INTルート= V [R&LT]; 11 int型 I = L; 12は 、一方(V [I] <ルート)++ Iが; // 見つける左サブツリー 13は int型 J = I; 14 ながら(J <R&LT)IF( V [J ++] <ルート)リターン falseに ; // 分析右サブツリー 15 リターン isBST(V、L、Iは- 1。)&& isBST(V、I、R&LT - 1。); 16 } 17 }。