3.8总结
T1 P4913 【深基16.例3】二叉树深度
首先看输入,采用左右孩子表示法,定义数组tree,类型是结构体,有两个子变量lt,rt记录左右孩子
实际上在存贮的时候依然可以使用vector,将每个点与他的父亲连边
然后定义一个dep数组表示一个节点的深度,每个点的深度实际上就是他父亲的深度+1,而根节点深度已经确定为1,所以只要dfs遍历一遍求出dep,取最大值即可
dfs代码:
点击查看代码
void dfs(int x,int ff){
dep[x]=dep[ff]+1;
for(int v:vt[x]){
if(v!=ff){
dfs(v,x);
}
}
}
T2 B3861 子树和
定义sz表示以i为根节点的子树内节点数量
每个点的子树和就是每个点子节点的子树和
dfs跑一遍,逐个输出即可
Tips:自己也算自己的子树和中一个
dfs代码:
点击查看代码
void dfs(int x,int ff){
sz[x]=1;
for(int v:vt[x]){
if(v!=ff){
dfs(v,x);
sz[x]+=sz[v];
}
}
}
本人(KK_SpongeBob)蒟蒻,写不出好文章,但转载请注明原文链接:https://www.cnblogs.com/OIer-QAQ/p/18768537

浙公网安备 33010602011771号