⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subsize.c

📁 &laquo 问题描述: 按前序列出二叉树各结点为根的子树的结点数。 &laquo 实验任务: 对于给定的二叉树
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -