USTC机试—//算法求解:根据文件中的先序序列创建一棵树然后中序输出深度小于depth/2的结点,其中零代表叶子结点,depth就是遍历树的深度

注解:此题比较综合,设计根据先序序列建立一颗树,然后用递归确定树的高度,然后再保存到depth/2的高度的树,最后用中序遍历输出即可,即牵涉到四个算法。
输入文件3.in如下:
ABC00DE0000
输出文件3.out如下:
BA
代码如下:
//算法求解:根据文件中的先序序列创建一棵树然后中序输出深度小于depth/2的结点,其中零代表叶子结点,depth就是遍历树的深度
#include<stdio.h>
#include<queue>
using namespace std;
#define N 100
struct Node{
  Node *lchild;
  Node *rchild;
  char c;
}E[N];
int loc;
char s[N];
Node *create(){//静态分配一个结点方法
     E[loc].lchild=E[loc].rchild=NULL;
	 return &E[loc++];
}
int i=0;
Node *preCreate(char s[]){//先序建立一颗树
	if(s[i]=='\0'||s[i]=='0')return NULL;//如果到结尾或者是遇到叶子结点返回空
    Node *p=create();
	p->c=s[i++];
	p->lchild=preCreate(s);
    p->rchild=preCreate(s);
	return p;
}
int depth(Node *T){//递归确定树的高度
    if(T==NULL)return 0;
	int left=1;
	int right=1;
    left+=depth(T->lchild);
	right+=depth(T->rchild);
	return left>right?left:right;
}
void depthCreate(Node *p,int depth){//保存新的高度为depth的树
	if(p!=NULL){
		if(depth==0){p->lchild=p->rchild=NULL;}
		else{depthCreate(p->lchild,depth-1);depthCreate(p->rchild,depth-1);}
	}else
		return;
}
FILE *fp1,*fp2;
void inOrder(Node *p){//中序遍历输出一棵树的内容
	if(p->lchild!=NULL)inOrder(p->lchild);
	fprintf(fp2,"%c",p->c);
    if(p->rchild!=NULL)inOrder(p->rchild);
}
int main(){
fp1=fopen("3.in","r");
fp2=fopen("3.out","w");
fscanf(fp1,"%s",s);
Node *p=preCreate(s);
int len=depth(p);
depthCreate(p,len/2);
inOrder(p);
fclose(fp1);
fclose(fp2);//ps为啥我老是忘记这个。。。
return 0;
}




















全部评论

相关推荐

头像
02-15 16:23
中南大学 Java
野猪不是猪🐗:签了美团真是不一样! 亲戚们都知道我签了美团,过年都围着我问送一单多少钱,还让弟弟妹妹们引以为戒,笑我爸我妈养了个🐢孩子,说从小就知道我这个人以后肯定没出息,我被骂的都快上天了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 听劝,这个简历怎么改 #
14086次浏览 182人参与
# 面试被问“你的缺点是什么?”怎么答 #
6359次浏览 98人参与
# 水滴春招 #
16366次浏览 346人参与
# 入职第四天,心情怎么样 #
11310次浏览 63人参与
# 租房找室友 #
8021次浏览 53人参与
# 读研or工作,哪个性价比更高? #
26152次浏览 356人参与
# 职场新人生存指南 #
199211次浏览 5509人参与
# 参加完秋招的机械人,还参加春招吗? #
26977次浏览 276人参与
# 文科生还参加今年的春招吗 #
4108次浏览 31人参与
# 简历无回复,你会继续海投还是优化再投? #
48624次浏览 561人参与
# 你见过最离谱的招聘要求是什么? #
144719次浏览 829人参与
# 如果重来一次你还会读研吗 #
155716次浏览 1706人参与
# 机械人选offer,最看重什么? #
69077次浏览 449人参与
# 选择和努力,哪个更重要? #
44292次浏览 493人参与
# 如果再来一次,你还会学硬件吗 #
103645次浏览 1245人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
20520次浏览 413人参与
# 招聘要求与实际实习内容不符怎么办 #
46727次浏览 494人参与
# 22届毕业,是读研还是拿外包offer先苟着 #
4652次浏览 27人参与
# 你们的毕业论文什么进度了 #
901211次浏览 8960人参与
# 软开人,你觉得应届生多少薪资才算合理? #
81375次浏览 496人参与
# 国企还是互联网,你怎么选? #
109191次浏览 853人参与
牛客网
牛客企业服务