蓝桥杯真题 多叉树转为二叉树 C++实现

蓝桥杯真题 多叉树转为二叉树 C++实现,第1张

 

 

每棵树最大可能形成的高度为其最深子树的高度(根节点高度为0)+其孩子的数量

#include
#include
using namespace std;
const int N = 1e5 + 10;
vector g[N];
int dfs(int u) {
	int ans = 0;
	int len = g[u].size();   
	for (int i = 0; i < g[u].size(); i++) {
		ans = max(ans, dfs(g[u][i]) + len);
	}
	return ans;
}
int main() { 
	int n;
	cin >> n;
	for (int i = 2; i <= n; i++) {
		int x;
		cin >> x;
		g[x].push_back(i);
	}
	int ans = dfs(1);
	cout << ans << endl;
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/564598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-06
下一篇 2022-04-06

发表评论

登录后才能评论

评论列表(0条)

保存