対称バイナリツリー:安全offer58を証明せよ。バイナリ画像が対称として定義されている、この同じとバイナリツリーである場合、バイナリツリーを分析して、対称ではありません

1つのタイトル説明

   バイナリツリーが対称でないかを決定するために使用され、機能を実装してください。バイナリ画像は対称としてこの同じ定義を持つバイナリツリーである場合ことに留意されたいです。

2つのアイデアや方法

  :対称、行きがけ;その後、左、右の子ノードトラバーサル子ノードを横断する、トラバーサルアルゴリズムを定義します>右の子ノード- -ルート>左の子ノード ; 及び前順:ルート- >子ノード左- >右の子ノードをバイナリツリーと対称配列先行順走査の比較先行順走査により二分木が同じ対称性であるかどうかを決定します。意味:バイナリの要素はすべて同じである可能性があるので、それも考慮に入れnullptr中に横断します。

3 C ++コアコード

1  / * 
2  構造体のTreeNode {
 3      int型のval;
4      構造体のTreeNode *左;
5      右側の構造体のTreeNode *;
6      ツリーノード(int型X):
 7              左のval(X)、(NULL)、右(NULL){
 8      }
 9  }。
10  * / 
11  クラスソリューション{
 12  公共13      BOOL isSymmetrical(ツリーノード* PROOT)
 14      {
 15          リターンissymmetrical(PROOT、PROOT)。
16      }
 17      
18      //比較のバイナリツリー先行順走査シーケンス(ルート- >左- >右)と対称先行順配列(ルート- >右- >左)、等しい場合、対称的な
19      BOOLの issymmetrical(ツリーノード* pRoot1、ツリーノード* pRoot2){
 20は、         
21である         IF(pRoot1 == NULL && pRoot2 == NULL)
 22が             戻り trueに ;         // すべての要素が同じである場合があるので、nullptr考えトラバーサルシーケンス
 23をれる         
24          // ヌルポインタ、別の非ヌルポインタ
25          IF(pRoot1 == NULL || pRoot2 == NULL)
 26は、             戻り falseに27          
28          IF(pRoot1->ヴァル= pRoot2->!ヴァル)
 29              リターン falseに30          
31は         リターン(pRoot1->左、pRoot2-> issymmetrical(pRoot1->右、pRoot2->左)&& issymmetrical 右)。
32      }
 33 }。
コードの表示

参考資料

https://blog.csdn.net/zjwreal/article/details/89282964

おすすめ

転載: www.cnblogs.com/wxwhnu/p/11434341.html
おすすめ