PAT甲级1099 Build A Binary Search Tree (30分):[C++题解]建立二叉搜索树、dfs和bfs
文章目录
- 题目分析
- 题目链接
题目分析
题意重述:给定一棵二叉树的结构,和待填的数值,请将数据填到二叉树中的结点中,使之满足二叉搜索树的性质。 然后按照层序遍历输出数值。
分析:
本题分两步。
第一步是按照二叉搜索树来建树;二叉搜索树有个很好的性质,就是它的中序遍历是从小到大有序的,所有这就是我们的切入点! 我们就 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相关推荐
- PAT甲级——1099 Build A Binary Search Tree (二叉搜索树)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90701125 1099 Build A Binary Searc ...
- 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 ...
- 【PAT甲级】1099 Build A Binary Search Tree (30 分)
一.题目分析 1. 翻译 recursively:递归地 property:性质 2. 关键点 1)二叉排序树的中序遍历结果是递增排序的,因此直接中序遍历题目给出的二叉树,将排好序的数据填入后,层序遍 ...
- 【PAT (Advanced Level) Practice】1099 Build A Binary Search Tree (30 分)
深搜+广搜 #include <iostream> #include <stack> #include <queue> #include <vector> ...
- 1099 Build A Binary Search Tree (30 分)【难度: 一般 / 知识点: 建立二叉搜索树】
https://pintia.cn/problem-sets/994805342720868352/problems/994805367987355648 首先: 要知道二叉搜索树的中序遍历是有序的 ...
- PAT 甲 1099 Build A Binary Search Tree
2022.1.28 练习 PAT甲 1099 Build A Binary Search Tree (原题链接) 题解如下: #include <bits/stdc++.h> using ...
- 1099. Build A Binary Search Tree (30)
1099. Build A Binary Search Tree (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...
- 【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 ...
- 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 ...
最新文章
- Python之路---------printinput
- python数字加密解密_Python对整形数字进行加密和解密
- nginx2goaccess.sh脚本内容
- SVM熟练到精通1:初识SVM
- OkapiBarcode生成条形码
- oracle随机备选数,Oracle查询优化器(一)
- 三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记
- ORA-01745: invalid host/bind variable name 报错
- SegmentFault D-Day 2016 年度总结报告
- 拓端tecdat|R语言极值理论EVT:基于GPD模型的火灾损失分布分析
- hibernate 镜像下载_虚拟光驱软件下载手机版-虚拟光驱免费中文版64位下载v5.8.0...
- 尚硅谷springSecurity笔记
- Unity 角度与旋转(四元数与欧拉角)
- BiomaRt 将小鼠的ENTREZID转化为人类的ENTREZID(同源ENTREZID转换)
- [Python]第一章(建议收藏)
- 40岁销售被裁员后抑郁了,学Python是他最后的希望
- 基于NSGA-II算法的研究和改进
- linux自带视频播放VLC,如何将VLC媒体播放器设置为默认视频播放器?
- 极客时间和极客学院_极客和书呆子之间的区别
- SpringBoot+Vue项目准妈妈孕期交流平台