16.层次遍历
代码。
/* 层次遍历 */ #include<iostream> #include<cstdlib> using namespace std; typedef char Elemtype; typedef struct node { Elemtype data; struct node* left; struct node* right; }Tree; //先序建立一个树,NULL指针用0代替 Tree* create_tree(void) { Tree* root=NULL; char ch; cin>>ch; if(ch=='0') return NULL; else { root=(Tree*)malloc(sizeof(Tree)); root->data=ch; root->left=create_tree(); root->right=create_tree(); } return root; } void free_tree(Tree* t) { if(t) { free_tree(t->left); free_tree(t->right); free(t); t=NULL; } } /*建立队列*/ #define MAX 100 typedef struct { Tree* data[MAX]; int front; int tail; }Queue; Queue* create_queue(void) { Queue* q=(Queue*)malloc(sizeof(Queue)); if(q) q->tail=q->front=0; else cout<<"create queue error"<<endl; return q; } int empty_queue(Queue* q) { if(q->front==q->tail) return 1; return 0; } int full_queue(Queue* q) { if((q->tail+1)%MAX==q->front) return 1; return 0; } void push_queue(Queue* q,Tree* t) { if(full_queue(q)) return ; q->data[q->tail]=t; q->tail=(q->tail+1)%MAX; } void pop_queue(Queue* q,Tree** t) { if(empty_queue(q)) return; *t=q->data[q->front]; q->front=(q->front+1)%MAX; } void free_queue(Queue* q) { free(q); } //层次遍历 void cengci(Tree* t) { Tree *p=t; Queue* q; q=create_queue(); push_queue(q,p); while(!empty_queue(q)) { pop_queue(q,&p); if(p!=NULL) { cout<<p->data<<" "; push_queue(q,p->left); push_queue(q,p->right); } } free_queue(q); cout<<endl; } int main(void) { Tree *root; root=create_tree(); cengci(root); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具