传送门:HDU 3999

题意

给出一组数, 按照bst树构建, 输出字典序最小得可构成相同bst树的序列


二分查找树

转载BST

题解

BST构建, 根据bst树的特性, 构造时只要先插入中间结点就可确定树的形状
ex: 构造树2, 3, 1按2, 1, 3次序输入是相同的结果
所以先构造然后树的先序遍历输出即可


AC code:

/*
adrui's submission
Language : C++
Result : Accepted
Love : yy
Favorite : Dragon BallsStanding in the Hall of Fame
*/#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<iostream>
#include<bitset>
#include<map>
#include<cctype>
using namespace std;#define M(a, b) memset(a, b, sizeof(a))
#define mid ((l + r) >> 1)
#define ls rt << 1, l, mid
#define rs rt << 1|1, mid + 1, r
#define lowbit(x) (x & (-x))
#define LL long long
#define REP(n) for(int i = 0; i < n; i++)
#define debug 0const int maxn(4000005);                                                //最大节点数int n, cnt;struct BST {BST *lch, *rch;int key;BST(int key = 0) {this->key = key;lch = rch = NULL;}void preorder() {if (cnt++) cout << " ";cout << key;if (lch != NULL) lch->preorder();if (rch != NULL) rch->preorder();}void insert(int key) {BST *rt = this, *tmp = new BST(key);while (rt->key) {if (tmp->key < rt->key) {if (rt->lch == 0)rt->lch = new BST;rt = rt->lch;}else {if (rt->rch == 0)rt->rch = new BST;rt = rt->rch;}}rt->key = tmp->key;}
};int main() {
#if debugfreopen("in.txt", "r", stdin);
#endif //debugcin.tie(0);cin.sync_with_stdio(false);int a;while (cin >> n) {BST rt;cnt = 0;for (int i = 0; i < n; ++i) {cin >> a;rt.insert(a);}rt.preorder();cout << endl;}return 0;
}

HDU 3999 BST + 先序遍历相关推荐

  1. leetcode 449. Serialize and Deserialize BST | 449. 序列化和反序列化二叉搜索树(BST后序遍历性质)

    题目 https://leetcode.com/problems/serialize-and-deserialize-bst/ 题解 本题的难点在于 利用 BST 的性质. 几个提示 根据后序遍历BS ...

  2. 判断给定序列是否为BST后序遍历序列

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.假设输入的数组的任意两个数字都互不相同. 目录 一.BST 1.1 定义 1.2 性质 二.思路 2.1 非递归版本 2.2 递归版本 ...

  3. LeetCode Kth Smallest Element in a BST(中序遍历)

    问题:给出一个二叉查找树,求第k小的数 思路:第一种方式是使用递归中序遍历得到结果后,直接取第k个数即可 第二种方式是使用非递归中序遍历,在得到第k个数后直接停止 具体代码参考: https://gi ...

  4. 程序员面试金典 - 面试题 17.12. BiNode(BST中序遍历)

    1. 题目 二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点). 实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就 ...

  5. HDU 3999 BST基础

    初学BST树,拿来练练手. 题目是你一个序列,叫你求出建同样的树所用的最少字典序的序列.... 嗯..应该就是前序了... 然后..恩恩.... #include <stdio.h> #d ...

  6. Python数据结构11:树的实现,树的应用,前中后序遍历,二叉查找树BST,平衡二叉树AVL树,哈夫曼树和哈夫曼编码

    1.概念 树一种基本的"非线性"数据结构. 相关术语: 节点Node:组成树的基本部分.每个节点具有名称,或"键值",节点还可以保存额外数据项,数据项根据不同的 ...

  7. 数据结构与算法(java):树-二叉树(二叉查找树(BST)、线索化二叉树、哈夫曼树、平衡二叉树【AVL】、二叉树的前中后序遍历)

    二叉树 1.定义 二叉树 就是度不超过2的树(每个结点最多只有两个子结点).如图 2.特殊二叉树 满二叉树 当二叉树的每一个层的结点树都达到最大值,则这个二叉树就是满二叉树. 完全二叉树 叶结点只能出 ...

  8. sdut 2128 树结构练习——排序二叉树(BST)的中序遍历

    树结构练习--排序二叉树的中序遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descript ...

  9. hdu 5444 Elven Postman(根据先序遍历和中序遍历求后序遍历)2015 ACM/ICPC Asia Regional Changchun Online...

    很坑的一道题,读了半天才读懂题,手忙脚乱的写完(套上模板+修改模板),然后RE到死-- 题意: 题面上告诉了我们这是一棵二叉树,然后告诉了我们它的先序遍历,然后,没了--没了! 反复读题,终于在偶然间 ...

最新文章

  1. 毕业设计从入门到放弃
  2. linux中chmod与chown两个命令详解
  3. Gson转换导致int转换成double的问题解决
  4. 怎么安装SharePoint2013 preview 在SQL2012 和 Windows Server 2008 R2 SP1
  5. 【MySQL原理解析】01. 一条SQL查询语句是如何执行的
  6. 微信取消分享后还是执行成功函数
  7. 通过反射认识泛型的本质
  8. TensorFlow by Google CNN识别猫和狗 Machine Learning Foundations: Ep #6 - Convolutional cats and dogs
  9. Eclipse中打开文件时单击和双击的设置
  10. 谈谈创业这点事 之 时间窗口
  11. 在CentOS7上使用LXC管理容器
  12. Unity手游实战:从0开始SLG——本地化篇(一)聊聊游戏本地化
  13. java开发基础(面试必备)
  14. Bash Shellshock(Bash远程代码执行)漏洞批量利用脚本
  15. 【电商支付项目(一)】数据库设计
  16. 新千题计划 2#:[AHOI JSOI14] 骑士游戏
  17. 这才是微服务划分的正确姿势,值得学习
  18. 快速简单制作macOS Ventura系统ISO格式镜像
  19. 神奇的 Python
  20. kong笔记 目录导航

热门文章

  1. 年终排名战白热化 领跑基金高招迭出
  2. linux非root上传文件,root账号无法上传文件到Linux服务器
  3. java 引用Pushy 实现Apns 完成ios 推送
  4. 规范国际工程EPC项目设计管理
  5. 托福口语12个万能答案
  6. ubuntu美化记,-修改皮肤,安装工具。
  7. 企业上云中如何选择CDN服务商?
  8. c语言输出数字1-100,c语言输出100以内素数 c语言编程输出1到100之间素数并求和,在线等,急?...
  9. 阿里iconfont的使用
  10. scp 报错:reverse mapping checking getaddrinfo for......failed - POSSIBLE BREAK-IN ATTEMPT!