70-72オファーをacwingすることは安全関連のバイナリツリーを証明します

アドレス

https://www.acwing.com/problem/content/66/

https://www.acwing.com/problem/content/67/

https://www.acwing.com/problem/content/submission/68/

 

3つの質問は、再帰的トラバーサルが解決することができるバイナリツリーの使用に関連しています

 

70バイナリ検索ツリーのk番目のノード

二分探索木を考えると、その中の最初のk小さいノードを検索してください。

あなたはそのツリーとkが存在していると仮定し、かつ1≤k≤ツリーの概要ポイントがあります。

エントリー

入力:ルート= [ 213NULLNULLNULLNULL ]、K = 3 

    2 
   / \
   1。   3 

出力:3

INORDERトラバーサル数はさらにKを追加しました

Kノードを横断するときにターゲットノードを見つけるために

1  / * *
 2  *バイナリツリーノードの定義。
3  *構造体のTreeNode {
 4  * int型のval;
5  *のTreeNode *左;
6  *のTreeNode *右;
7  *ツリーノード(INT X):(NULL)左のval(X)、右(NULL){}
 8  *}。
9   * / 
10  クラスソリューション{
 11  公共12ツリーノード* ANS。
13      のTreeNode *旅行(ツリーノード*根、INTK)
 14      {
 15          であれば(ルート== NULL)リターンヌル;
16          
17          旅行(root-> 左、K)。
18          k-- 19          であれば(k個の== 0)ANS = ルート。
20          
21          旅行(root-> 右、K)。
22          
23          
24          戻りNULL。
25      }
 26      
27      のTreeNode * kthNode(ツリーノード*根、int型K){
 28           旅(ルート、K)。 
29の          
30           リターンANS;
31      }
 32 }。
コードの表示

 

71深さのバイナリツリー

入力バイナリツリーのルート、ツリー要求の深さ。

、ツリー内の最長パスの長さの深さ(ルート、リーフノードを含む)リーフノードを順次通過するルートノードから経路ツリーを形成します。

エントリー

入力:バイナリツリー[ 812は2NULLNULL6。 4。 NULLNULLNULLNULL ]以下に示すとおり
     8 
   / \
   12は  2 
     / \
     。6    4。

出力:3

再帰的トラバーサルを横断する層を追加すること

1  / * *
 2  *バイナリツリーノードの定義。
3  *構造体のTreeNode {
 4  * int型のval;
5  *のTreeNode *左;
6  *のTreeNode *右;
7  *ツリーノード(INT X):(NULL)左のval(X)、右(NULL){}
 8  *}。
9   * / 
10  クラスソリューション{
 11  公共12  INT ANS = 0 13      
14      空隙旅行(ツリーノード*根、int型K){
 15          であれば(ルート== NULL){
 16             もし(K> ANS)
 17の                  ANS = K。
18              リターン;
19          }
 20          旅行(root->右、K + 1 )。
21          旅行(root->左、K + 1 )。
22          
23      }
 24  
25      INT treeDepth(ツリーノード* ルート){
 26          であれば(ルート== NULL)戻り 0 27          旅行(根、0 );
28の         
29          
30          リターンANS;
31      }
 32 }。
コードの表示

 

 

72平衡二分木

入力バイナリツリーのルートノードは、ツリーの決意は、平衡二分木ではありません。

バイナリツリーの任意のノードの左及び右の部分木の深さがない複数の点によって異なる場合、それは平衡二分木です。

注意:

  • 引当金の空​​の木は平衡二分木です。

エントリー

入力:バイナリ[ 5711NULLNULL12は9。 NULLNULLNULLNULL ]以下に示すように、
     5 
   / \
   7。  11。 
    /   \
    12れている   9。

出力:trueに

バック約サブツリーの大きい深さまでサブツリーの各ノードの記録深さ再帰トラバーサル

1  / * *
 2  *バイナリツリーノードの定義。
3  *構造体のTreeNode {
 4  * int型のval;
5  *のTreeNode *左;
6  *のTreeNode *右;
7  *ツリーノード(INT X):(NULL)左のval(X)、右(NULL){}
 8  *}。
9   * / 
10  クラスソリューション{
 11  公共12      BOOL ANS = 13      のint isBalancedInner(ツリーノード*根、int型K)
 14      {
 15          であれば(ルート== NULL)リターン・K;
16          
17          のint L = isBalancedInner(root->左、K + 1 )。
18          INT R = isBalancedInner(root->右、K + 1 )。
19          
20          であれば(ABS(LR)> 1)ANS = 21          
22          リターンMAX(L、R)。
23      }
 24  
25      BOOL isBalanced(ツリーノード*のルート){
 26          isBalancedInner(根、0 );
27の         
28          リターンANS;
29      }
 30 }。
コードの表示

 

おすすめ

転載: www.cnblogs.com/itdef/p/11525063.html