C ++中n元树的每个节点的子树中的叶节点数
在本教程中,我们将编写一个程序来查找 n 叉树中每个节点的叶节点数。
让我们看看解决问题的步骤。
用你喜欢的树初始化 n 叉树。
使用 DFS 遍历树。
维护一个数组来存储每个节点的叶子节点计数。
在递归调用 DFS 后增加叶节点的计数。
打印所有带有叶节点计数的节点。
示例
让我们看看代码。
#include <bits/stdc++.h>输出结果using namespace std;
void insertNode(int x, int y, vector<int> tree[]) {
tree[x].push_back(y);
}
void DFS(int node, int leaf[], int visited[], vector<int> tree[]) {
leaf[node] = 0;
visited[node] = 1;
for (auto it : tree[node]) {
if (!visited[it]) {
DFS(it, leaf, visited, tree);
leaf[node] += leaf[it];
}
}
if (!tree[node].size()) {
leaf[node] = 1;
}
}
int main() {
int N = 8;
vector<int> tree[N + 1];
insertNode(1, 2, tree);
insertNode(1, 3, tree);
insertNode(3, 4, tree);
insertNode(3, 5, tree);
insertNode(3, 6, tree);
insertNode(4, 7, tree);
insertNode(4, 8, tree);
int leaf[N + 1];
int visited[N + 1];
for (int i = 0; i <= N; i++) {
visited[i] = 0;
}
DFS(1, leaf, visited, tree);
for (int i = 1; i <= N; i++) {
cout << i << "->" << leaf[i] << endl;
}
return 0;
}
如果你运行上面的代码,那么你会得到下面的结果。
1->52->1
3->4
4->2
5->1
6->1
7->1
8->1
结论
如果您对本教程有任何疑问,请在评论部分提及。
以上是 C ++中n元树的每个节点的子树中的叶节点数 的全部内容, 来源链接: utcz.com/z/327510.html