Jizhongライフ1.5

トピック:

多くのデータ構造の中で、バイナリツリーは、アプリケーションの広い範囲で、特別かつ重要な構造です。またはバイナリツリーノード、またはルート一つとバイナリビットの唯一のノードを有し、残りのノードは、サブセットとして、左、右、および他のように、2つの互いに素な部分集合、一つのサブセットに分割されます。各サブセットは、バイナリツリーです。
バイナリ検索を横断する各ノードは、各ノードが一度訪問され、一度だけアクセスされるように、旅行経路にタップされます。ナビゲートするための3つの最も一般的な方法があります。
(1)トラバーサルをプレオーダー:バイナリツリーは、エアオペレーション空であれば、そうでない場合、最初は、最終の前に、それ以前に左サブツリー順序を横切る、右サブツリートラバーサルシーケンスをルートノードを訪問します。
(2)プレオーダー:バイナリツリーが空、空であれば、そうでない場合、ルートノードを訪問し、その後、第1の左サブツリーを前順、及び最終的に先行予約右サブツリー。
(3)注文トラバーサルをバイナリツリーは、エアオペレーション空であれば、そうでない場合トラバーサルは、右サブツリー順序トラバーサルをサブツリーを左に、そして最終的にルートノードにアクセスしたプレオーダー。

 

 

例えば、図1に示すABCD、シーケンスの先行予約を横断される配列の前に二分木はCBAD、後順トラバーサル順序はCBDAあります。
先行順走査順序とノードのアクセス順序は、注文後順トラバーサルが一意に決定される前に与えられた場合には、バイナリツリーの、それも見つけることは非常に簡単です。しかし、我々は唯一のトラバーサル順序は、例えば、不確実である順序どおり、プリアンブルとトラバーサルの帰りがけ順の順序を知っている場合:、先行順走査順序はABCDで、注文を横断するCBDAで、2つのバイナリツリー出会いがありますこのシーケンスは、図1と図2を参照してください。
問題は、今与えられた順序及びこれを満たすために、バイナリツリートラバーサル順序の異なる形態の木の総数を必要後順序トラバーサル順トラバーサル、前です。

入力:

全体の入力の2行は、最初の行は第二行所定のアクセスシーケンスの先行順フロント、リアアクセスシーケンスの先行予約を与えます。

大文字で表さバイナリツリーノードには、上付き文字が同じ2つのノードを持っていません。入力されたデータには、スペースを含めると、少なくともバイナリツリーの要件を満たしていることを保証するものではありません。

出力:

出力整数は、異なる形式のバイナリ数の要件を満たしています。
 

サンプル入力:

ABCD 
CBDA
出力例:
2

プログラム:

方法1: 
暴力バイナリツリー構造は、判決の要件を満たしています。 
予想スコア:10

 

方法2: 
直接出力サンプル 
スコア:30

 

正解:

私たちが逆さまに横断するためにフォローアップを見てみると、順序が左右のルーツとなります。

二つのノードが互いに接続され、2つのトラバーサルで同じであるリーフノードは、あるている場合。

時間のためのスペース:隣接行列を最適化することができます。

実際には、最適化することはできません

コード:

1の#include <cstdioを>
 2の#include <CStringの>
 3の#include <iostreamの>
 4  使って 名前空間STDを、
5  長い 電源(INT X){
 6      長い 長い T = 1 7      のためにint型 i = 0 ; iはXを<; iは++ ){
 8          T * = 2 ;
9      }
 10      リターンT。
11  }
 12  INT メイン(){
 13      // freopenは( "tree.in"、 "R"、STDIN)。
14      // freopenは( "tree.out"、 "W"、STDOUT)。
15      チャーファー[ 100000 ]、秒[ 100000 ]。
16      CIN >> FIR >> 秒。
17      INT LEN = STRLEN(FIR)。
18      であれば(LEN == 1)COUT << 1 19      {
 20          int型の和= 0 21          のためには、int型 = Iを0 ; iは<len- 1 ; I ++ ){
 22              のためにINT J = len- 1 ; J>0 ; j-- ){
 23                  であれば(FIR [I] ==秒[J] &&モミ[I + 1 ] ==秒[J- 1 ]){
 24                      和++ 25                      ブレーク;
26                  }
 27              }
 28          }
 29          COUT << 電源(合計)。
30      }
 31      リターン 0 32 }

 

おすすめ

転載: www.cnblogs.com/ouzijun-OJ/p/11389270.html