トピック:https://pintia.cn/problem-sets/994805342720868352/problems/994805355987451904
一般タイトルシーケンス、バイナリ検索ツリー構造、出力ノードと最大深さ及び最大深度ビューの数を与えることを意図しています。
この方法、BFS
1の#include <iostreamの> 2の#include <unordered_map> 3の#include <キュー> 4の#include <アルゴリズム> 5 使用して 名前空間をSTD。 6 7 構造体ノード{ 8 int型データ、レベル。 9 ノード* lchild。 10 ノード* rchild。 11 }。 12 13 空隙インサート(ノード*&ルート、int型データ){ 14 であれば(ルート== NULL){ 15 ルート= 新しいノード。 16 root->データ= データ。 17 root-> lchild = root-> rchild = NULL; 18 } そう であれば(データ<= root->データ)インサート(root-> lchild、データ)。// 此题BST定义 19 他のインサート(root-> rchild、データ); 20 } 21 22 unordered_map < INT、INT > 融点; 23 INT maxlevel = - 1 。 24の ボイド BFS(ノード* ルート){ 25 キュー<ノード*> Q。 26 root->レベル= 1 。 27 q.push(ルート)。 28 ながら(!{q.empty()) 29 ノード・ノード= q.front()。 30 MP [ノード- >レベル] ++ ; 31 maxlevel = MAX(maxlevel、ノード- > レベル)。 32 q.pop()。 33 であれば(ノード- > lchild!= NULL){ 34 ノード- > lchild->レベル=ノード- >レベル+ 1 。 35 q.push(ノード- > lchild)。 36 } 37 であれば(ノード- > rchild!= NULL){ 38 ノード- > rchild->レベル=ノード- >レベル+1 ; 39 q.push(ノード- > rchild)。 40 } 41 } 42 } 43 INT メイン(){ 44 、INT 、N、T。 45 CIN >> N。 46 ノード*ルート= NULL; 47 のために(INT iは= 0 ; I <N ++ {I) 48 CIN >> T。 49 インサート(根、T)。 50 } 51 BFS(ルート)。 52 のprintf(" %D +%のD =%dの",mp[maxlevel],mp[maxlevel-1],mp[maxlevel]+mp[maxlevel-1]); 53 return 0; 54 }
方法2、DFS
1の#include <iostreamの> 2の#include <unordered_map> 3の#include <キュー> 4の#include <アルゴリズム> 5 使用して 名前空間をSTD。 6 7 構造体ノード{ 8 int型データ、レベル。 9 ノード* lchild。 10 ノード* rchild。 11 }。 12 13 空隙インサート(ノード*&ルート、int型データ){ 14 であれば(ルート== NULL){ 15 ルート= 新しいノード。 16 root->データ= データ。 17 root-> lchild = root-> rchild = NULL; 18 } そう であれば(データ<= root->データ)インサート(root-> lchild、データ)。// 此题BST定义 19 他のインサート(root-> rchild、データ); 20 } 21 22 unordered_map < INT、INT > 融点; 23 INT maxlevel = - 1 。 24の ボイド DFS(ノード*ルート、INT レベル){ 25 であれば(ルート== NULL){ 26 maxlevel = MAX(maxlevel、、レベル1 )。 27 リターン; 28 } 29 MP [レベル] ++ ; 30の DFS(root-> lchild、レベル+ 1 )。 31の DFS(root-> rchild、レベル+ 1 )。 32 } 33 、INT (){主 34 INT N、T。 35 CIN >> N。 36 ノード・ルート= NULL; 37 のために(INT iは= 0 ; I <N ++ {I) 38 CIN >> T。 39 インサート(根、T)。 40 } 41 DFS(ルート、1 ); 42 のprintf(" %のD +%のD =%dの"、MP [maxlevel]、MP [maxlevel- 1 ]、MP [maxlevel] + MP [maxlevel- 1 ])。 43 リターン 0 。 44 }