C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++プログラムでのN-Aryツリーの深さ


このチュートリアルでは、n-aryツリーの深さを見つける方法を学習します。

n-ary ツリーは、ツリーの各ノードが n以下のツリーです。 子ノード。

n-aryツリーの深さを見つける必要があります。ベクトルを使用して、ツリー内の各ノードの子を格納します。

問題を解決するための手順を見てみましょう。

  • ダミーデータでツリーを初期化します。

  • n-aryツリーの深さを見つけるための再帰関数を記述します。

    • ツリーの最大深度を格納する変数を初期化します。

    • 各ノードの子を繰り返し処理します。

      • 最大深度は、現在の最大深度とノードの子の深度の最大値です。

      • 最大深度変数をma​​xDepthと仮定すると およびma​​xDepth=max(maxDepth、findDepthOfTree(* children) は、ツリーの深さを見つけるための再帰ステートメントです。

    • ツリーの最終的な最大深度はma​​xDepth+ 1です。 。

  • ツリーの最大深度を印刷します。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   vector<Node *> child;
};
Node *newNode(int data) {
   Node *temp = new Node;
   temp->data = data;
   return temp;
}
int findDepthOfTree(struct Node *node) {
   if (node == NULL) {
      return 0;
   }
   int maxDepth = 0;
   for (vector<Node*>::iterator it = node->child.begin(); it != node->child.end(); it++) {
      maxDepth = max(maxDepth, findDepthOfTree(*it));
   }
   return maxDepth + 1;
}
int main() {
   Node *root = newNode(1);
   root->child.push_back(newNode(2));
   root->child.push_back(newNode(3));
   root->child.push_back(newNode(4));
   root->child[2]->child.push_back(newNode(1));
   root->child[2]->child.push_back(newNode(2));
   root->child[2]->child.push_back(newNode(3));
   root->child[2]->child.push_back(newNode(4));
   cout << findDepthOfTree(root) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

3

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. Pythonでn-aryツリーのルートを見つけるプログラム

    配列内のn-aryツリーのノードが与えられたとします。ツリーを再構築して、ツリーのルートノードを見つけて返す必要があります。返されたノードから、ツリー全体をプレオーダー表記で表示する必要があります。 したがって、入力が次のような場合 その場合、出力は次のようになります [14, 27, 32, 42, 56, 65] ツリーのルートを使用して、ツリーのプレオーダートラバーサルを表示します。したがって、出力はツリーのプレオーダートラバーサルです。 これを解決するには、次の手順に従います- indegree:=整数値を含む新しいマップ ツリー内のノードごとに、実行します

  2. Pythonでn-aryツリーのコピーを作成するプログラム

    ルートが「ルート」に与えられているn-aryツリーが提供されたとします。完全なn-aryバイナリツリーのコピーを作成し、両方のツリーのプレオーダートラバーサルを実行する必要があります。コピーしたツリーは、別のルートノードを使用して保存する必要があります。ツリーのノード構造を以下に示します- Node:    value : <integer>    children : <array> したがって、入力が次のような場合 、出力はになります [14, 27, 32, 42, 56, 65] 入力ツリーと出力ツリーのプレオ