http://poj.org/problem?id=1577

【题意】

有一颗二叉搜索树,每次操作都把二叉搜索树的叶子从左到右揪掉(露出来的父节点就变成了新的叶子结点)

先给出了揪掉的叶子序列(多个字符串)

给出这课二叉搜索树先序遍历的结果

【思路】

最后揪掉的肯定是根,最后揪掉的是最先插入的,倒着建立二叉搜索树就可以。

【AC】

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue> using namespace std;
struct node{
int num;
node *lef;
node *rig;
};
const int maxn=1e3+;
string str[maxn];
int cur; node *work(){
node *rt=(node *)malloc(sizeof(node));
rt->num=str[cur-][]-'A';
rt->lef=NULL;
rt->rig=NULL;
for(int i=cur-;i>=;i--){
int len=str[i].length();
for(int j=;j<len;j++){
node *now=rt;
while(){
if(str[i][j]-'A'<now->num){
if(now->lef) now=now->lef;
else{
node *nd=(node *)malloc(sizeof(node));
nd->num=str[i][j]-'A';
nd->lef=NULL;
nd->rig=NULL;
now->lef=nd;
break;
}
}else{
if(now->rig) now=now->rig;
else{
node *nd=(node *)malloc(sizeof(node));
nd->num=str[i][j]-'A';
nd->lef=NULL;
nd->rig=NULL;
now->rig=nd;
break;
}
}
}
}
}
return rt;
}
void preorder(node *rt){
if(rt==NULL) return;
printf("%c",rt->num+'A');
preorder(rt->lef);
preorder(rt->rig);
free(rt);
}
int main(){
cur=;
while(cin>>str[cur]){
if(str[cur][]=='*'||str[cur][]=='$'){
node *rt=work();
preorder(rt);
puts("");
if(str[cur][]=='$') break;
else cur=;
}else{
cur++;
}
}
return ;
}

最新文章

  1. iStylePDF安全电子文档解决方案之电子合同在线订立
  2. easyui中的combobox小知识点~~
  3. JavaScript探秘系列
  4. Wmware桥接网络虚拟机无法上网的问题
  5. ASP.NET 查询客户端请求IP地址
  6. Android 的Google+平台
  7. js的几大数据类型
  8. Ajax请求,跨域小坑
  9. Java程序性能优化-读书笔记(一) 单例模式
  10. 小明历险记:规则引擎drools教程一
  11. DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)
  12. jQuery上下滑动内容切换选项卡
  13. junit+mock+spring-test构建后台单元测试
  14. python yield用法 (tornado, coroutine)
  15. Day7--Python--基础数据类型补充,集合,深浅拷贝
  16. day 9 - 2 函数练习
  17. 案例情景--在一次Oracle 数据库导出时 EXP-00008;ORA-00904:EXP-00000: oracle不同版本导入导出规则
  18. 假期训练七(hdu-2845 dp,hdu-1846,2188 巴什博奕)
  19. maven的pom报plugins缺失的解决方法
  20. js动态实现时分秒

热门文章

  1. 【Web应用-FTP】FTP 容量显示说明
  2. openssl安装介绍
  3. Linux系统里让vim支持markdown格式的语法高亮
  4. Python学习日志9月17日 一周总结
  5. 测试类执行报错:AttributeError: &#39;Testlei&#39; object has no attribute &#39;test_cases&#39; 和data,unpack用法解析
  6. c++ 各种类型字符串转换
  7. valgrind测试程序内存泄漏问题
  8. 2、Task 使用 ContinueWith 而不要使用 Wait
  9. MySQL插入SQL语句后在phpmyadmin中注释显示乱码
  10. WinForm各种关闭