九度 1201 -二叉排序数遍历- 二叉排序树
2015-12-27 18:40
253 查看
这个是道正统的树构建和遍历题。一開始还想用数组构建取代一下水过去,可是发现不行,仅仅好老老实实的用指针了。二叉排序树和遍历方法假设不清楚定义的话。最好去看看数据结构书复习下。
#include<stdio.h> struct node{ node *l; node *r; int val; node(int a):val(a),l(NULL),r(NULL){}; }; node *root; int n; void qian(node *p){ printf("%d ",p->val); if(p->l!=NULL)qian(p->l); if(p->r!=NULL)qian(p->r); } void zhong(node *p){ if(p->l!=NULL)zhong(p->l); printf("%d ",p->val); if(p->r!=NULL)zhong(p->r); } void hou(node *p){ if(p->l!=NULL)hou(p->l); if(p->r!=NULL)hou(p->r); printf("%d ",p->val); } int main(){ int val; node *p; while(~scanf("%d",&n)){ root=NULL; for(int i=0;i<n;i++){ scanf("%d",&val); if(i==0){ root=new node(val); continue; } p=root; while(1){ if(val==p->val)break; else if(val<p->val){ if(p->l==NULL){ p->l=new node(val); break; } else{ p=p->l;continue; } } else if(val>p->val){ if(p->r==NULL){ p->r=new node(val); break; } else{ p=p->r;continue; } } } } qian(root); printf("\n"); zhong(root); printf("\n"); hou(root); printf("\n"); } return 0; }
相关文章推荐
- 对话框Dialog
- 【HDOJ】3275 Light
- Apache 集成subversion
- JSP基本语法
- [LeetCode]Easy合集I
- JVM内存模型及结构
- Backdoor.Zegost木马病毒分析(一)
- HDU 3832 Earth Hour(最短路)
- UIApplication 和 Appdelegate-----iOS
- Autocomplete代码的修改
- 面试中的C++常见问题
- 23种设计模式(9)_结构型_组合模式(Composite Pattern)
- DedeAMPZ通过界面连接数据库操作(dos查看)
- 【iOS】自己定义TabBarController
- java NIO教程(十二)--Java NIO与IO
- 计算机学院大学生程序设计竞赛(2015’11)1008 游乐场
- 成功的背后!(给所有IT人)
- 计算机学院大学生程序设计竞赛(2015’11)1007 油菜花王国
- STM32 ADC笔记单次转换已测试通过
- 大数据、Hadoop和云计算