subsize.c

来自「&laquo 问题描述: 按前序列出二叉树各结点为根的子树的结点数。 」· C语言 代码 · 共 45 行

C
45
字号
#include<stdio.h>
#include<malloc.h>
int **malloc2d(int r,int c)
{
	int i;
	int **t;
	t=(int **)malloc(r*sizeof(int *));
	for(i=0;i<r;i++)
		t[i]=(int *)malloc(c*sizeof(int));
	return t;
}

int size(int **a,int i)
{
	int lsize,rsize;
	if(a[i][1]==0) lsize=0;
	else lsize=size(a,a[i][1]);
	if(a[i][2]==0) rsize=0;
	else rsize=size(a,a[i][2]);
	return lsize+rsize+1;
}

void PreOrder(int size(int **a,int i),int **a,int i)
{
	printf("%d ",size(a,i));
	if(a[i][1]!=0) PreOrder(size,a,a[i][1]);
	if(a[i][2]!=0) PreOrder(size,a,a[i][2]);
}

void main()
{	int n,**a,i,t,l,r,x;
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
	scanf("%d",&n);
	a=(int **)malloc2d(n+1,3);
	for(i=1;i<=n;i++)
	{
		scanf("%d %d %d",&t,&l,&r);
		if(i==1) x=t;
		a[t][0]=t;a[t][1]=l;a[t][2]=r;
	}
	PreOrder(size,a,a[x][0]);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?