[説明]対称バイナリツリー

タイトル説明

        以下の条件を玄玄を満たしている場合は、ツリーのルートの少しを持っている権利は、対称バイナリツリーと呼ばれていました:

        1.バイナリツリー。

        2.すべてのツリーノード交換、等しいパワーの位置と対応点新しい、元のツリーの同じツリー構造の左右のサブツリー。

        図中の番号は、IDノードは、外部ノードの数を表し、ノードの重みです。

画像の読み込みに失敗しました。

        今、バイナリツリー与え、私はあなたがそれサブツリー願って、ツリーは対称サブバイナリツリー、およびノー​​ドの最大数です。ツリー出力サブツリーノードしてください。

        注意:樹木の根のみが対称バイナリツリーです。この問題の規則では、Tのサブルートノードに「サブツリー」とは:バイナリツリーノードTとその後続ノードのすべてを。

 

入力形式

        最初の行、正の整数nは、ツリーの特定のノードの数、所定のノード番号1-nは、1がルートノードです。

        ノードのためのスペースで分離された第2行、N-正の整数、i番目の正の整数重みVI I。

        2つの正の整数のLi、次のn行は、riは、それぞれ、左と右の子ノード番号i。右/左の子は、-1手段が存在しない場合。二つの数字の間のスペースで区切られています。

 

出力フォーマット

        合計行は、2つの対称的なフォークツリーノード与えられた最大ツリーを示す整数を含んでいます。

 

サンプル入力

2

1 3

2 -1

-1 -1

 

サンプル出力

1

 

問題の解決策

        対称パリンドローム、既知の文字列のアルゴリズムを考えます。

        manacher?しません。そして、それをハッシュ。

        二つの配列トラバーサルを得るために、ツリー全体にわたり(左 - - ルート右)全体ツリートラバーサルシーケンスを介して、その後、前順をオンにします。

        重量は直接ハッシュを設定することができます。構造?

        それは同じ構造か否かを判断することができるように、実際には、我々は、各ノードのレコードのハッシュを有するサブツリーのノード数に対応することができます。

        注:この保険は権利がある、彼はいくつかのハッシュを比較するように、ハッシュは、二重あるいは3つのハッシュすることができます。

リファレンスプログラム

 

おすすめ

転載: www.cnblogs.com/kcn999/p/11210898.html
おすすめ