暑假集训 8.11 树结构练习——排序二叉树的中序遍历 sdutoj2128
2016-08-16 16:53
309 查看
树结构练习——排序二叉树的中序遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。现给定一组数据,请你对这组数据按给定顺序建立一棵排序二叉树,并输出其中序遍历的结果。输入
输入包含多组数据,每组数据格式如下。第一行包含一个整数n,为关键值的个数,关键值用整数表示。(n<=1000)
第二行包含n个整数,保证每个整数在int范围之内。
输出
为给定的数据建立排序二叉树,并输出其中序遍历结果,每个输出占一行。示例输入
1 2 2 1 20
示例输出
2 1 20
///原题 后台有bug....苦了我一上午啊....
///ACcode
#include <iostream> using namespace std; const int maxn=10010; int num[maxn]; typedef struct tree { int data; tree *lc,*rc; ///leftchildren and rightchildren } tree,*Tree; void Insert(Tree &T,int key) { if(T==NULL) ///如果T节点无数据 申请空间 将key放入 { T=new tree; T->lc=NULL; T->rc=NULL; ///设 左右孩子为空 T->data=key; return ; ///结束 此次函数 } if (key > T->data) { Insert(T->rc,key); } else ///if (key < T->data) 现在题目这地方还有bug 就是处理等于问题 { Insert(T->lc,key); ///递归调用 } } int top; ///从零开始 注意初始化 void midout(Tree &T) /// InOrder { if(T) { midout(T->lc); top++; num[top]=T->data; /// 中序输出数组下标从 1 开始 midout(T->rc); } } int main() { int n,i,key; Tree T; while (cin>>n) { top=0; ///初始化 0 T=NULL; ///刚开始无数据设置为空 for (i=1; i<=n; i++) { cin>>key; Insert(T,key); ///依次插入key进入排序二叉树 } midout(T); for (i=1; i<=top; i++) { cout<<num[i]; if (i!=top) { cout<<" "; } } cout<<endl; ///控制输出格式 } return 0; }
相关文章推荐
- 暑假集训 8.11-2 树结构练习——判断给定森林中有多少棵树 sdut2198 并查集
- SDUTOJ(2128)树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- OJ2128树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历 SDUT
- 树结构练习——排序二叉树的中序遍历
- SDUT-树结构练习——排序二叉树的中序遍历
- 数据结构之二叉树 树结构练习——排序二叉树的中序遍历 (排序建树+中序遍历)
- 树结构练习——排序二叉树的中序遍历
- SDUT 2128 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- SDUT2128树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历 分类: 树 2015-06-21 11:05 12人阅读 评论(0) 收藏
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- SDUT 2128 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历
- 树结构练习——排序二叉树的中序遍历