首页 > 代码库 > PAT1004 Counting Leaves (30) 数组链式建树
PAT1004 Counting Leaves (30) 数组链式建树
一开始尝试用二叉树,最后用结构
struct node{
int k;
int son[101];
};
son[i]记录子结点
#include<stdio.h>#include<string.h>struct node{ int k; int son[101];};int height(struct node tree[],int root){//家族最大的代数 if(tree[root].k==0) return 1; else{ int max=0; for(int i=0;i<tree[root].k;i++) if(max<height(tree,tree[root].son[i])) max=height(tree,tree[root].son[i]); return max+1; }}int salve(struct node tree[],int level,int root){ if(tree[root].k!=0&&level==1) return 0; else if(level==1) return 1; else{ int max=0; for(int i=0;i<tree[root].k;i++){ max+=salve(tree,level-1,tree[root].son[i]); } return max; }};int main(){ struct node tree[101]; memset(tree,0,101*sizeof(struct node)); int n,m,id,k,count;//0 < N < 100, the number of nodes in a tree, and M (< N), the number of non-leaf nodes. scanf("%d%d",&n,&m); for(int i1=0;i1<m;i1++){//输入m行,建树 ????有问题 scanf("%d%d",&id,&k); tree[id].k=k; for(int i2=0;i2<tree[id].k;i2++){ scanf("%d",&tree[id].son[i2]); } } int max=height(tree,01); for(int i=1;i<=max;i++){ if(i!=1) printf(" %d",salve(tree,i,01)); else printf("%d",salve(tree,i,01)); } return 0;}
PAT1004 Counting Leaves (30) 数组链式建树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。