文章目录

  • 题目分析
  • 题目链接

题目分析


题意重述:给定一棵二叉树的结构,和待填的数值,请将数据填到二叉树中的结点中,使之满足二叉搜索树的性质。 然后按照层序遍历输出数值。

分析:
本题分两步。

第一步是按照二叉搜索树来建树;二叉搜索树有个很好的性质,就是它的中序遍历是从小到大有序的,所有这就是我们的切入点! 我们就 dfs按照树的中序遍历来往里填数,这样构造出来的就是二叉搜索树。

第二步是层序遍历。二叉树的层序遍历就是bfs。

具体操作的时候,这里用到了 l 和r两个数组,从根结点开始一路存下来每个结点的左儿子和右儿子。便于dfs和bfs。
ac代码

#include<bits/stdc++.h>
using namespace std;const int N = 110;int n;
int l[N] ,r[N]; //左儿子数组,右儿子数组。
int q[N]; //数组模拟队列,用于bfs()
int a[N] ,w[N];  //a存储读入的数值, w存储每个结点实际存的哪个数void dfs(int u, int& k){if(u == -1) return;dfs(l[u], k);w[u] = a[k++];//中序遍历,每个结点得到权值dfs(r[u], k);
}//层序遍历,就是广度优先搜索
void bfs(){int hh =0 ,tt =0;q[0] =0;while(hh <= tt){int t = q[hh++];if(l[t] != -1)  q[++tt] =l[t];if(r[t] != -1) q[++tt] = r[t];}//输出层序遍历cout<<w[q[0]];for(int i=1; i<n; i++) cout<<" "<<w[q[i]];
}int main(){cin>> n;for( int i = 0 ;i< n; i++) cin>> l[i] >> r[i];for(int i =0; i< n; i++) cin>> a[i];sort(a, a + n ); //二叉排序树的中序遍历序列,从小到大int k = 0;dfs(0, k); //dfs 按照中序遍历的顺序,往里填数据bfs(); //层序遍历}

题目链接

PAT甲级1099 Build A Binary Search Tree (30分)

PAT甲级1099 Build A Binary Search Tree (30分):[C++题解]建立二叉搜索树、dfs和bfs相关推荐

  1. PAT甲级——1099 Build A Binary Search Tree (二叉搜索树)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90701125 1099 Build A Binary Searc ...

  2. C++学习之路 | PTA(甲级)—— 1099 Build A Binary Search Tree (30分)(带注释)(精简)

    1099 Build A Binary Search Tree (30分) A Binary Search Tree (BST) is recursively defined as a binary ...

  3. 【PAT甲级】1099 Build A Binary Search Tree (30 分)

    一.题目分析 1. 翻译 recursively:递归地 property:性质 2. 关键点 1)二叉排序树的中序遍历结果是递增排序的,因此直接中序遍历题目给出的二叉树,将排好序的数据填入后,层序遍 ...

  4. 【PAT (Advanced Level) Practice】1099 Build A Binary Search Tree (30 分)

    深搜+广搜 #include <iostream> #include <stack> #include <queue> #include <vector> ...

  5. 1099 Build A Binary Search Tree (30 分)【难度: 一般 / 知识点: 建立二叉搜索树】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805367987355648 首先: 要知道二叉搜索树的中序遍历是有序的 ...

  6. PAT 甲 1099 Build A Binary Search Tree

    2022.1.28 练习 PAT甲 1099 Build A Binary Search Tree (原题链接) 题解如下: #include <bits/stdc++.h> using ...

  7. 1099. Build A Binary Search Tree (30)

    1099. Build A Binary Search Tree (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...

  8. 【PAT】A1099. Build A Binary Search Tree (30)

    Author: CHEN, Yue Organization: 浙江大学 Time Limit: 200 ms Memory Limit: 64 MB Code Size Limit: 16 KB A ...

  9. C++学习之路 | PTA(甲级)—— 1064 Complete Binary Search Tree (30分)(带注释)(精简)

    1064 Complete Binary Search Tree (30分) A Binary Search Tree (BST) is recursively defined as a binary ...

最新文章

  1. Python之路---------printinput
  2. python数字加密解密_Python对整形数字进行加密和解密
  3. nginx2goaccess.sh脚本内容
  4. SVM熟练到精通1:初识SVM
  5. OkapiBarcode生成条形码
  6. oracle随机备选数,Oracle查询优化器(一)
  7. 三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记
  8. ORA-01745: invalid host/bind variable name 报错
  9. SegmentFault D-Day 2016 年度总结报告
  10. 拓端tecdat|R语言极值理论EVT:基于GPD模型的火灾损失分布分析
  11. hibernate 镜像下载_虚拟光驱软件下载手机版-虚拟光驱免费中文版64位下载v5.8.0...
  12. 尚硅谷springSecurity笔记
  13. Unity 角度与旋转(四元数与欧拉角)
  14. BiomaRt 将小鼠的ENTREZID转化为人类的ENTREZID(同源ENTREZID转换)
  15. [Python]第一章(建议收藏)
  16. 40岁销售被裁员后抑郁了,学Python是他最后的希望
  17. 基于NSGA-II算法的研究和改进
  18. linux自带视频播放VLC,如何将VLC媒体播放器设置为默认视频播放器?
  19. 极客时间和极客学院_极客和书呆子之间的区别
  20. SpringBoot+Vue项目准妈妈孕期交流平台

热门文章

  1. uva10088格点多边形
  2. LVS工作总结之原理篇–DR模式
  3. 内核打上yaffs2补丁遇到的问题
  4. 基于MDA的移动应用开发建模及实现
  5. 以太网口差分电平_以太网接口学习笔记
  6. 【Paper】2009_Controllability of Multi-Agent Systems from a Graph-Theoretic Perspective
  7. 一起学nRF51xx 18 -  蓝牙协议栈烧录
  8. 如何修炼成某一领域的高手
  9. RK2908开机时间分析及优化
  10. android init.rc语法标准 .