C++プログラムでのN-Aryツリーの深さ
このチュートリアルでは、n-aryツリーの深さを見つける方法を学習します。
n-ary ツリーは、ツリーの各ノードが n以下のツリーです。 子ノード。
n-aryツリーの深さを見つける必要があります。ベクトルを使用して、ツリー内の各ノードの子を格納します。
問題を解決するための手順を見てみましょう。
-
ダミーデータでツリーを初期化します。
-
n-aryツリーの深さを見つけるための再帰関数を記述します。
-
ツリーの最大深度を格納する変数を初期化します。
-
各ノードの子を繰り返し処理します。
-
最大深度は、現在の最大深度とノードの子の深度の最大値です。
-
最大深度変数をmaxDepthと仮定すると およびmaxDepth=max(maxDepth、findDepthOfTree(* children) は、ツリーの深さを見つけるための再帰ステートメントです。
-
-
ツリーの最終的な最大深度はmaxDepth+ 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
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
Pythonでn-aryツリーのルートを見つけるプログラム
配列内のn-aryツリーのノードが与えられたとします。ツリーを再構築して、ツリーのルートノードを見つけて返す必要があります。返されたノードから、ツリー全体をプレオーダー表記で表示する必要があります。 したがって、入力が次のような場合 その場合、出力は次のようになります [14, 27, 32, 42, 56, 65] ツリーのルートを使用して、ツリーのプレオーダートラバーサルを表示します。したがって、出力はツリーのプレオーダートラバーサルです。 これを解決するには、次の手順に従います- indegree:=整数値を含む新しいマップ ツリー内のノードごとに、実行します
-
Pythonでn-aryツリーのコピーを作成するプログラム
ルートが「ルート」に与えられているn-aryツリーが提供されたとします。完全なn-aryバイナリツリーのコピーを作成し、両方のツリーのプレオーダートラバーサルを実行する必要があります。コピーしたツリーは、別のルートノードを使用して保存する必要があります。ツリーのノード構造を以下に示します- Node: value : <integer> children : <array> したがって、入力が次のような場合 、出力はになります [14, 27, 32, 42, 56, 65] 入力ツリーと出力ツリーのプレオ