题意就是给你二叉树的bfs和dfs遍历,都是结点小的优先遍历

本来自己没做出来,不想写的,做了半天测试数据是对的,但是WA。因为看了一个大佬的解法,让我感慨万分,简洁而直接的解法,正确而清晰的思路,让我佩服的五体投地。充分运用的bfs,dfs,以及栈的性质,这句话很重要,代码真是艺术,总存在最简解法。

#include<iostream>
#include <string>
#include <string.h>
#include<vector>
#include<stack>
using namespace std;
const int maxn = 1000 + 5;int bfs[maxn];
vector<int>tree[maxn];int main()
{int n; int temp;while (cin >> n && n) {for (int i = 1; i <= n; i++) {cin >> temp; bfs[temp] = i; tree[i].clear();}int next;cin >> next;stack<int>sp;sp.push(next);for (int i = 1; i < n; i++) {cin >> next;while (1) {int root = sp.top();if (bfs[next] > bfs[root] + 1 || (bfs[root] + 1 == bfs[next] && root > next) || root == next) {//第二个判断就是结点小的优先搜索tree[root].push_back(next);sp.push(next);  //加入要搜索子节点的栈break;}else {sp.pop();//没有搜索到子节点 回退上一个节点}}}for (int i = 1; i <= n; i++) {cout << i << ":";for (int j = 0,sz= tree[i].size(); j < sz; j++) {cout << " "<<tree[i][j];}cout << endl;}}//system("pause");return 0;
}

UVa10410 Tree Reconstruction(bfs+dfs确定二叉树)相关推荐

  1. 邻结矩阵的建立和 BFS,DFS;;

    邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!-------------------- ...

  2. [Leetcode][第785题][JAVA][判断二分图][BFS][DFS]

    [问题描述][中等] [解答思路] 1. DFS 深度优先遍历 时间复杂度:O(N+M) 空间复杂度:O(N) class Solution {private static final int UNC ...

  3. LeetCode 1263. 推箱子(BFS+DFS / 自定义哈希set)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.2 BFS + DFS 1. 题目 「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置. 游戏地图用大小为 n * m 的网 ...

  4. LeetCode 1034. 边框着色(BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给出一个二维整数网格 grid,网格中的每个值表示该位置处的网格块的颜色. 只有当两个网格块的颜色相同,而且在四个方向中任 ...

  5. 全局路径规划:图搜索算法介绍1(BFS/DFS)

    对于全局路径规划的设计,我们先要了解什么是图搜索,在此之前,要先知道什么是图: 可以看到,图有很多种,有无向图,有向图,节点之间还可以有不同的weight, 用于表述从节点与节点直接迁移的代价. 而图 ...

  6. 深度搜索 java_java实现的深度搜索与广度搜索算法BFS,DFS以及几种最短路径算法...

    java实现的深度搜索与广度搜索算法BFS,DFS以及几种最短路径算法 public class City { String name; int id; static int idCounter = ...

  7. 【八数码问题】基于状态空间法的知识表示与状态搜索:无信息搜索(BFS/DFS) 启发式搜索(A*)

    前言 一.问题引入 二.状态空间法 1. 知识及其表示 2. 状态空间法定义 3. 问题求解 三.基于状态空间搜索法解决八数码问题 1. 八数码问题的知识表示 2. 状态空间图搜索 1. 无信息搜索 ...

  8. 【LeetCode题解】BFS层序遍历二叉树

    102.二叉树的层序遍历 分析: 层序遍历,顾名思义,就是按一层一层的顺序来对二叉树进行遍历,遍历顺序如下图所示 那么如何对二叉树进行遍历呢,我们首先将上面二叉树各层按照遍历次序放在同一直线上 现在我 ...

  9. bfs dfs 搜索入门模板题

    bfs & dfs 题目链接:https://vjudge.net/contest/404511 1.最短路(bfs) (1)一维最短路 D - Catch That Cow 题目大意: 在一 ...

最新文章

  1. 只给测试集不给训练集,要怎么做自己的物体检测器?
  2. 马斯克语出惊人:大部分人没必要活那么长,未来把意识注入机器人实现永生...
  3. JavaScript两个数组是否有相同元素
  4. c++STL容器的Queue
  5. 理解图形化执行计划 -- 第3部分:分析执行计划
  6. XgBoost使用及调参教程
  7. 开机启动失败_电脑常见开机引导错误的解决方法
  8. 起点海外版 Hybrid App-内嵌页优化实践
  9. 怎么解log方程_微观动力学解合成氨催化反应TOF
  10. 三维重构 c++_桐柏3d打印模型生产厂家【博通三维】-博通三维
  11. AE域名,沙漠之花阿联酋的专属域名-域名百科
  12. html中使用js、jQuery展示页面小结
  13. 树莓派 4G模块 PPP 拨号 NDIS 拨号
  14. c语言对字符串逆序,【C语言】 字符串逆序
  15. js进阶 12-4 jquery键盘事件如何使用
  16. 空间索引 - 四叉树
  17. php美颜滤镜,新手入门看这里,BeautifyFace美颜滤镜Demo中文注释
  18. 回炉重造--数据库操作速成记
  19. 腾讯单点登录系统跨域劫持漏洞
  20. 每日一练 — 2021.12.30

热门文章

  1. 客户端从config上获取配置
  2. Spring5的Web 组件
  3. ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Queue
  4. SpringMVC拦截器-拦截器的作用
  5. Nacos配置中心-多配置文件加载
  6. 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系
  7. 适合oracle运行的软件环境,创建最适合的Oracle运行环境
  8. Jenkins Pipeline 语法
  9. 数字转换英语c语言程序,c语言 把英文数字 例如 one hundred and eleven 转换位数字 111;怎样编写程序,要求1~1000内的英文数字...
  10. hadoop读取mysql数据_Pyspark连接mysql、hive、hdfs 实例展示