二叉排序树(三序输出)
2016-06-11 11:41
274 查看
二叉排序树
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:6039
解决:2538
题目描述:
输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。
输入:
输入第一行包括一个整数n(1<=n<=100)。 接下来的一行包括n个整数。
输出:
可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。 每种遍历结果输出一行。每行最后一个数据之后有一个空格。
样例输入:
样例输出:
提示:
输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。
代码:
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:6039
解决:2538
题目描述:
输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。
输入:
输入第一行包括一个整数n(1<=n<=100)。 接下来的一行包括n个整数。
输出:
可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。 每种遍历结果输出一行。每行最后一个数据之后有一个空格。
样例输入:
5 1 6 5 9 8
样例输出:
1 6 5 9 8 1 5 6 8 9 5 8 9 6 1
提示:
输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; typedef struct Node{ Node *l, *r; int v; Node(){l = NULL; r = NULL;} }*tree, Node; tree build(tree p, int v){ if(p == NULL){ p = new Node(); p->v = v; return p; } if(v < p->v) p->l = build(p->l, v); else if(v > p->v) p->r = build(p->r, v); else return p; return p; } void PreOrder(tree p){ if(p == NULL)return; printf("%d ", p->v); PreOrder(p->l); PreOrder(p->r); } void InOrder(tree p){ if(p == NULL)return; InOrder(p->l); printf("%d ", p->v); InOrder(p->r); } void PostOrder(tree p){ if(p == NULL)return; PostOrder(p->l); PostOrder(p->r); printf("%d ", p->v); } int main(){ int N; while(~scanf("%d", &N)){ tree p; p = NULL; int v; for(int i = 0; i < N; i++){ scanf("%d", &v); p = build(p, v); } PreOrder(p); puts(""); InOrder(p); puts(""); PostOrder(p); puts(""); } return 0; }
相关文章推荐
- 查找代码错误.java
- 动态计算tablviewcell高度
- java创建邮件模板
- UI Components的理解
- 挂载分区
- 3.Android群英传读书笔记-控件架构与自定义控件
- Android中数据文件解析(Json解析)
- 剑指offer(五十七)之二叉树的下一个结点
- C#操作 word代码
- 阅读笔记06
- 第16周阅读程序1(2)
- nodemcu的gpio相关操作
- Mybatis <set>标签
- Mysql 技术内幕(一)
- 如何在命令行模式下查看Python帮助文档---dir、help、__doc__
- Java基础知识强化105:打印数组的方法总结
- h5缓存之数据库
- DIV+CSS clear both清除产生浮动
- js note 1
- cts调试环境的搭建