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] 入力ツリーと出力ツリーのプレオ