【C++】满二叉树问题
/* 给出一棵满二叉树的先序遍历,有两种节点:字母节点(A-Z,无重复)和空节点(#)。要求这个树的中序遍历。输出中序遍历时不需要输出#。 满二叉树的层数n满足1<=n<=5。 Sample Input: ABC#D#E Sample Output: CBADE */ #include<cstdio> #include<cmath> #include<cstring> #include<iostream> using namespace std; const int M=1024; char data[M]; int layer; struct node { char data; struct node *l; struct node *r; }; void build(node * & t,int l) { if(l>layer) return ; int i=0; while(data[i]=='\0') i++; char tc=data[i]; //cout<<i<<endl<<tc<<endl; data[i]='\0'; if(tc=='#') { t=NULL; return ; } t=new node(); t->data=tc; build(t->l,l+1); build(t->r,l+1); } void display(node *t) { if(t==NULL) return ; display(t->l); printf("%c",t->data); display(t->r); } int main() { /* printf("%d\n",(int)(log(8)/log(2))); printf("%f\n",(log(7)/log(2))); */ memset(data,'\0',sizeof(data)); while(scanf("%s",&data)) { //printf("%s\n",data); int n=strlen(data)+1; /* if(log(n)/log(2)>(int)(log(n)/log(2))) layer=(int)(log(n)/log(2))+1; else*/ layer=(int)(log(n)/log(2)); //printf("%d\n",layer); node *tree; build(tree,1); display(tree); } return 0; }
tz@HZAU
2019/3/13
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY