31オファーは、一連の意味:バイナリツリーの深さ

最初の小さな問題が、これは比較的簡単で、前のバイナリツリーは多くの質問をした、バイナリツリーの深さです。

1  クラスソリューション{
 2  公共3      INT MAX(int型のx、int型のY)
 4      {
 5          リターン(X> Y)?X:Y。
6      }
 7      INT TreeDepth(ツリーノード* PROOT)
 8      {
 9          もし(PROOT == NULL)
 10              リターン 0 11          INT左= 0、右= 0、深度= 0 12          であれば(pRoot-> 左)
13          {
 14              左= TreeDepth(pRoot-> 左)。
15          }
 16          であれば(pRoot-> 右)
 17          {
 18              右= TreeDepth(pRoot-> 右)。
19          }
 20          リターン MAX(右、左)+ 1 21  
22      }
 23 }。

第2の小問題は、それが再帰的なマスターを中心にした最初の質問、に基づいて難しいことではありません。

1  クラスソリューション{
 2  公共3      
4      int型の最大値(INT X、int型のY)
 5      {
 6          リターン(X> Y)?X:Y。
7      }
 8      
9      INT TreeDepth(ツリーノード* PROOT)
 10      {
 11          であれば(PROOT == NULL)
 12              リターン 0 13  
14          のint左= 0、右= 0 15          左= TreeDepth(pRoot->左)。// ここでは、関数が入力することができ、最初の2行は、再帰的に終了することができるので、それが空の場合、左右のサブツリーが、空のサブツリーであるか否かを判断する
16を          右= TreeDepth(pRoot-> 右)
 。17          リターン左MAX(右)+ 1 ;
 18である 
。19      }
 20      BOOL IsBalanced_Solution(ツリーノード* PROOT){
 21は         IF(PROOT == NULL)
 22が             戻り trueに23であり         、// 左と右の部分木の深さを計算
24          INTを左= TreeDepth(pRoot-> 左)。
 25          INT右= TreeDepth(pRoot-> 右)
 26は、         IF -右)= <(ABS(左1。27              リターン IsBalanced_Solution(pRoot->左)&& IsBalanced_Solution(pRoot-> 右)。
28          他の
29               の復帰 はfalse ;
30      }
 31 }。

ツリーのタイトルのために、彼の心はあまりにも複雑なことを考えないように、次の手順を実行しますように。

1.、再帰終了条件を書く一般的にノードポインタがヌルであります

2.最も簡単な木の木のだと思うだけで3ノードと計算方法を考えます

3.それは、より複雑なツリーにも対応することができ、再帰的な条件を書きます

おすすめ

転載: www.cnblogs.com/neverland0718/p/11184696.html