
数据结构与算法
文章平均质量分 52
I_am_overflow
这个作者很懒,什么都没留下…
展开
-
PAT(Advanced) 1116 Come on! Let‘s C C++实现
PAT(Advanced) 1116 Come on! Let’s C C++实现题目链接1116 Come on! Let’s C题目大意给定ID和排名,考虑四种情况:排名第一、排名为质数、排名非质数且非第一、没有进入排名,根据这四种情况对查询进行输出,若对同一ID查询超过一次则输出已查询。算法思路借助C++ STL容器unordered_map存放ID和排名映射,容器unordered_set存放已经查询的ID。AC代码/*author : eclipseemail : eclip原创 2021-02-03 11:28:22 · 297 阅读 · 0 评论 -
PAT(Advanced) 1132 Cut Integer C++实现
PAT(Advanced) 1132 Cut Integer C++实现题目链接[1132 Cut Integer[(https://pintia.cn/problem-sets/994805342720868352/problems/994805347145859072)题目大意给定K位的十进制数值Z,根据其前后两部分分为K/2的两个数值A和B,判断Z能否被A和B的乘积整除,若能则输出Yes,否则输出No算法思路对Z除基取余法取后K/2位得到B,操作后的Z即为A,进行判断即可,注意B为0的可能原创 2021-02-02 11:25:48 · 194 阅读 · 0 评论 -
PAT(Advanced) 1054 The Dominant Color C++实现
PAT(Advanced) 1054 The Dominant Color C++实现题目链接1054 The Dominant Color题目大意给定二维矩阵求出现频率最高的值。算法思路借助C++ STL的unordered_map容器,统计出现的所有值的频率,输出频率最高的值即可。AC代码/*author : eclipseemail : eclipsecs@qq.comtime : Mon Feb 01 10:53:16 2021*/#include <bits/原创 2021-02-01 11:06:37 · 186 阅读 · 0 评论 -
C++ 优先队列实现最大堆和最小堆
C++ 优先队列实现最大堆和最小堆优先级队列template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type> > class priority_queue;C++ STL实现的优先级队列是一种容器适配器,类似堆,可以随时插入元素,但只能检索到优先级队列中优先级最高的元素。Priority queues are a type原创 2021-01-31 20:46:28 · 1479 阅读 · 0 评论 -
PAT(Advanced) 1037 Magic Coupon 优先级队列 C++实现
PAT(Advanced) 1037 Magic Coupon 优先级队列 C++实现题目链接1037 Magic Coupon题目大意给定优惠券面值数组和产品价格数组,数组中的值可正可负,使用面值为NNN的优惠券购买价格为MMM的产品可以得到N×MN \times MN×M的返利,求可以得到的最大返利值并输出。算法思路优惠券面值和产品价格分别为正正、正负、负负、负正的四种情况,能够增加返利的只有正正(整数越大,乘积越大)和负负(负数越小,乘积越大),采用C++ STL中的优先级队列,最大堆分别原创 2021-01-31 18:46:56 · 291 阅读 · 1 评论 -
PAT(Advanced) 1027 Colors in Mars C++实现
PAT(Advanced) 1027 Colors in Mars C++实现题目链接1027 Colors in Mars题目大意给定三个两位的十进制数(0~168),输出对应的三个十三进制数,若结果只有一位则左补零。算法思路十进制数范围为0~168,即00~CC,分别对13除基和取余得到高位和低位完成转化即可。AC代码/*author : eclipseemail : eclipsecs@qq.comtime : Sat Jan 30 16:32:07 2021*/#in原创 2021-01-30 16:59:37 · 234 阅读 · 0 评论 -
PAT(Advanced) 1092 To Buy or Not to Buy C++实现
PAT(Advanced) 1092 To Buy or Not to Buy C++实现题目链接1092 To Buy or Not to Buy题目大意给定字符串和目标字符串,若给定字符串中包含目标字符串中所有的字符,则输出Yes并输出给定字符串中多余的字符的个数,否则输出No并输出除去给定字符串包含的字符后目标字符串中仍缺少的字符串的个数。算法思路借助C++ STL容器unordered_map,将给定字符串和目标字符串中所有的字符计数,遍历目标字符串中的字符计数值,与给定字符串的字符计数原创 2021-01-29 17:41:04 · 228 阅读 · 0 评论 -
PAT(Advanced) 1058 A+B in Hogwarts C++实现
PAT(Advanced) 1058 A+B in Hogwarts C++实现题目链接1058 A+B in Hogwarts题目大意给定特殊格式的值A和B,计算A和B的和,以给定的特殊格式输出算法思路对给定字符串进行划分,转为整型,相加得到结果再转化为给定的格式并输出,注意进位即可。AC代码/*author : eclipseemail : eclipsecs@qq.comtime : Thu Jan 28 17:47:20 2021*/#include <bits原创 2021-01-28 18:39:35 · 391 阅读 · 2 评论 -
PAT(Advanced) 1023 Have Fun with Numbers C++实现
PAT(Advanced) 1023 Have Fun with Numbers C++实现题目链接1023 Have Fun with Numbers题目大意给定数值,判断其翻倍后组成的数字序列与原数值组成的数字序列是否一致,组成数字的顺序可以改变但各个数字的个数不能改变算法思路由于数值比较大,需采用字符串进行存储和计算,记录原来数字的序列组成并计数,再与翻倍后的数字序列组成对比即可AC代码/*author : eclipseemail : eclipsecs@qq.comtime原创 2021-01-27 18:17:46 · 257 阅读 · 3 评论 -
PAT(Advanced) 1024 Palindromic Number C++实现
PAT(Advanced) 1024 Palindromic Number C++实现题目链接1024 Palindromic Number题目大意给定一个数值N和一个阈值K,判断N是否为回文数,若不是回文数,则加上其逆置的数进行转换,判断这个数是否为回文数,若是则输出该数并输出转换次数,若不是则重复此过程直到K次,K次之后若仍不能得到回文数则输出第K次转换得到的数和K算法思路根据题意进行编码,注意使用字符串来存储数值和运算,以免数值过大错误。AC代码/*author : eclips原创 2021-01-26 18:43:54 · 266 阅读 · 0 评论 -
PAT(Advanced) 1078 Hashing 二次探测散列 C++实现
PAT(Advanced) 1078 Hashing 二次探测散列 C++实现题目链接1078 Hashing题目大意给定值不同的正整数序列,将所有数插入哈希表中,并输出它们在哈希表中的位置,若无法插入则打印-来代替位置。哈希函数为H(key)=key%TSizeH(key)=key \% TSizeH(key)=key%TSize,采用二次探测散列法来解决冲突,哈希表长度为大于等于给定长度MSize的最小质数算法思路根据题意,求得哈希表大小MSize,遍历给定序列,根据哈希函数H(key)=原创 2021-01-25 17:50:32 · 437 阅读 · 0 评论 -
PAT(Advanced) 1077 Kuchiguse 最长后缀 C++实现
PAT(Advanced) 1077 Kuchiguse 最长后缀 C++实现题目链接1077 Kuchiguse题目大意给定N个字符串,求最长公共后缀子串AC代码/*author : eclipseemail : eclipsecs@qq.comtime : Mon Jan 25 15:59:09 2021*/#include <bits/stdc++.h>using namespace std;bool match(string suffix, string原创 2021-01-25 17:27:58 · 349 阅读 · 0 评论 -
PAT(Advanced) 1034 Head of a Gang C++实现 并查集 路径压缩
PAT(Advanced) 1034 Head of a Gang题目链接1034 Head of a Gang题目大意根据通话记录来找到帮派的头目,一个帮派由三个及以上的人组成且其成员之间通话时长大于阈值K算法思路根据题意,一个帮派的人在同一个连通分量中,通过并查集,累加连通分量的关系权值和连通分量中的顶点数,找到符合条件的输出头目和人数,并查集合并时将关系权重较大的顶点作为根结点,需要注意的是找到连通分量所属的根结点每次都需要调用find(),否则某些情况会出错根据题意,输出的名字需要进行原创 2020-10-13 22:32:00 · 270 阅读 · 0 评论 -
PAT(Advanced) 1015 Reversible Primes C++实现
PAT(Advanced) 1015 Reversible Primes C++实现题目链接1015 Reversible Primes题目大意可逆素数指的是一个数若在任意数制中是素数,则在该数制中逆转的该数也是素数算法思路对于给定的一个数,在十进制下,判断该数是否为素数,若不为素数则必然不是可逆素数,若为素数,则通过除基取余法求得d进制“逆数”的序列,将进制序列转为十进制,最后判断是否素数AC代码/*author : eclipseemail : eclipsecs@qq.com原创 2020-10-09 10:26:34 · 298 阅读 · 0 评论 -
PAT(Advanced)1031 Hello World for U C++实现
PAT(Advanced)1031 Hello World for U C++实现题目链接1031 Hello World for U算法思路模拟题,根据题意左边和右边列的字符最大数量小于等于最后一行的字符个数,计算左边和右边的列中有几个字符,依次打印即可n1 = str.length() / 3;n2 = str.length() - n1 * 2;while (n2 + 2 > n1) { n2 -= 2; n1++;}if (n2 + 2 < n1) {原创 2020-10-09 09:34:25 · 257 阅读 · 0 评论 -
二叉树线索化 Python实现
二叉树线索化 Python实现二叉树线索化二叉树线索化对二叉树进行线性化操作,使其每一个结点在线性化序列中有且只有一个直接前驱和直接后继,其中第一个结点直接前驱和最后一个结点直接后继置空,建立规则如下若当前结点有左子树,则left域为左孩子,leftTag域为False;否则指向其直接前驱结点,leftTag域为True若当前结点有右子树,则right域为右孩子,rightTag域为False;否则指向其直接后继结点,rightTag域为True下述实现以二叉搜索树为例线索化记录之前访问的原创 2020-08-24 23:58:40 · 1038 阅读 · 0 评论 -
Scala实现堆排序
Scala实现堆排序相关内容 & 算法详解堆排序(递归)C++实现环境CentOS Linux release 8.1.1911 (Core)Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server VM, Java 14.0.2)算法思路在另一篇博客堆排序(递归)C++实现中已详细叙述并用C++实现,此处只是使用Scala进行简单复现,均基于算法导论提供的思想,算法思路便不再赘述实现代码object HeapSort { var array原创 2020-08-05 21:39:09 · 513 阅读 · 0 评论 -
Scala实现快速排序
Scala实现快速排序(算法导论)相关内容快速排序C++实现Leetcode215. Kth Largest Element in an Array(基于快速排序及其划分算法)算法思路快速排序基于分治策略,通过划分算法,递归地对左右子序列进行划分,直到划分到长度为1的子序列回溯,经过logn次划分,即可得到有序序列def quickSort(start : Int, end : Int) : Unit = { if (start < end) { var pivot :原创 2020-08-05 13:59:53 · 748 阅读 · 0 评论 -
二叉搜索树详解&实现 C++
二叉搜索树二叉搜索树BST,二叉排序树(Binary Sort Tree),也称二叉查找(排序)树(Binary Search Tree),有如下的定义,递归,或者是一棵空树,或者是具有下列性质的二叉树:若左子树非空,则左子树上所有结点的关键字均小于它的根结点的值;若右子树非空,则右子树上所有结点的关键字均大于它的根结点的值;左、右子树本身也分别为二叉排序树;二叉排序树中所有结点关键字唯一搜索根据二叉搜索树定义,从根结点开始,递归地,若为关键字小于当前结点关键字,到左子树去寻找,否则到右原创 2020-07-19 14:07:24 · 359 阅读 · 0 评论 -
红黑树详解&实现 C++
红黑树性质红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是RED或BLACK通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出两倍,因而近似于平衡,可以保证最坏情况下基本动态集合操作的时间复杂度为O(lgn)红黑性质:每个节点是黑色或红色根节点是黑色的每个叶节点都是黑色的若一个节点是红色,则其两个子...原创 2020-07-18 13:28:24 · 433 阅读 · 0 评论 -
优先级队列 (堆)C++实现
优先级队列 (堆)C++实现优先级队列优先级队列是一种用来维护由一组数据构成的集合的数据结构,其中每个元素都有一个相关的值称为关键字。借助堆结构可以实现优先级队列。弹出操作弹出操作,即取出最大元素操作,取出最大元素后,堆的长度减一,通过堆最后元素与一个元素交换,再调用maxHeapify函数维护堆的性质,保证弹出堆顶元素后的堆仍然保持堆性质C++代码int PriorityQueue::extractMax() { if (empty()) { printf("Hea原创 2020-07-16 10:46:22 · 987 阅读 · 0 评论 -
堆排序(递归)C++实现
堆排序(递归)C++实现堆排序使用堆的数据结构来进行排序,堆可以看成一个近似完全二叉树的顺序存储结构的数组维护堆性质维护堆的性质,对于给定的下标i,以i结点为根节点的堆左右子树都是最大堆,此时i对应结点的关键字可能小于其孩子节点,则违背了堆性质,通过向下调整使得这个堆满足最大堆的性质堆调整算法选取根节点左右孩子关键字较大值与根节点交换,再递归进入被交换的左右孩子为根节点的堆,继续向下调整,直到当前的堆满足最大堆性质或者调整到叶子节点。C++代码void MaxHeap::maxHeapif原创 2020-07-15 21:39:45 · 1103 阅读 · 0 评论 -
LeetCode 64. Minimum Path Sum 动态规划 C++实现
LeetCode 64. Minimum Path Sum 动态规划 C++实现题目链接Minimum Path Sum题目大意给定网格,每个格子中都有一个权值,求解从左上角格子到右下角格子的最短路径,位于每个格子中只能向下或向右移动算法思路根据题意,基于动态规划思想,初始化第一列和第一行,除第一列和第一行的每个格子的状态为其上一个格子和其左边一个格子中的较小值,状态转移方程为grid[i][j] += min(grid[i][j - 1], grid[i - 1][j]);,迭代结束后,gri原创 2020-07-03 22:47:41 · 327 阅读 · 0 评论 -
LeetCode72. Edit Distance 动态规划 C++实现
LeetCode72. Edit Distance C++实现题目链接Edit Distance题目大意给定两个字符串word1和word2,求最短编辑距离,即通过增删改操作能够使得两个字符串变成一个字符串的最少步骤的步数算法思路根据题意,基于动态规划的思想,dp[i][j]为子串word1[0...i]与子串word2[0...j]的编辑距离,初始化,第一行,dp[0][i] = i;,第一列,dp[i][0] = i,因为,对于第一行,此时的word1的子串为空串,和word2的子串的距离为原创 2020-07-01 15:02:53 · 466 阅读 · 0 评论 -
PAT(Advanced)1113 Integer Set Partition C++实现
PAT(Advanced)甲级1113 Integer Set Partition C++实现题目链接1113 Integer Set Partition题目大意给定一个含有N个元素的序列,将其分为两个长度为n1和n2的序列,和分别为S1和S2,要求|n1 - n2|最小,|S1-S2|最大,输出最小|n1 - n2|和最大|S1-S2|算法思路根据题意,排序后,将前N / 2个元素减去N - (N / 2)个元素的和即可AC代码/*author : eclipseemail : ec原创 2020-06-29 20:03:21 · 323 阅读 · 0 评论 -
PAT(Advanced)1105 Spiral Matrix C++实现
PAT(Advanced)甲级1105 Spiral Matrix C++实现题目链接1105 Spiral Matrix题目大意给定N个元素的序列,输出其m * n螺旋矩阵,螺旋矩阵从左上角开始递减地顺时针螺旋,要求m * n等于N,且n <= m,且m - n在所有m - n的可能值中最小算法思路根据题意,将给定序列排序,在设置m*n二维数组spiralMatrix存放序列对应鞋标,顺时针遍历逆时针遍历即可AC代码/*author : eclipseemail : eclip原创 2020-06-29 18:25:44 · 353 阅读 · 0 评论 -
PAT(Advanced)1115 Counting Nodes in a BST 先序遍历 C++实现
PAT(Advanced)甲级1115 Counting Nodes in a BST 先序遍历 C++实现题目链接1115 Counting Nodes in a BST题目大意给定一个序列,建立二叉搜索树,根据题目给出二叉排序树定义,在二叉搜索树中的的任一节点其左子树的所有节点关键字小于等于该节点关键字,其左子树的所有节点关键字大于该节点关键字,其左右子树也必须是一棵二叉搜索树,可以存在关键字相同的节点算法思路根据题意,先建立二叉搜索树BST::BST(vector<int>&原创 2020-06-28 21:29:06 · 366 阅读 · 0 评论 -
PAT(Advanced)1155 Heap Paths C++实现
PAT(Advanced)甲级1155 Heap Paths C++实现题目链接1155 Heap Paths题目大意给定一组完全二叉树的层次遍历序列,输出从根节点到叶子节点的所有序列,右子树路径打印在左子树路径前,并判断给定的完全二叉树是满足堆性质,若为最大堆输出Max Heap,若为最小堆则输出Min Heap,若不是堆则输出Not Heap算法思路根据题意,给定完全二叉树的层次遍历序列,利用二叉树顺序存储结构,进行先序遍历,设置vector<int>整型动态数组answer,以原创 2020-06-28 18:40:59 · 321 阅读 · 0 评论 -
PAT(Advanced)1094 The Largest Generation 先序遍历 C++实现
PAT(Advanced)甲级1094 The Largest Generation 先序遍历 C++实现题目链接1094 The Largest Generation题目大意给定家族树,求解人数最多的一代,输出最多人数和那一代的代数,保证答案唯一算法思路根据题目要求和树的先序遍历定义,遍历整棵树,对应的层数累加,最后遍历所有层的节点数得到最大值即可void preOrderTraverse(int currentLevel, int order) { level[currentLev原创 2020-06-28 12:09:44 · 306 阅读 · 0 评论 -
PAT(Advanced)1030 Travel Plan Dijkstra最短路 C++实现
PAT(Advanced)甲级1030 Travel Plan Dijkstra最短路 C++实现相关内容PAT(Advanced)1003 Emergency (Dijkstra最短路) (邻接矩阵)C++实现DijkstraSSSP(单源最短路径求解)(迪克斯特拉算法堆优化)(Java实现)(邻接矩阵)(优先级队列)(堆优化)Dijkstra最短路(迪克斯特拉算法)(C++实现)(邻接矩阵)PAT(Advanced)1087 All Roads Lead to Rome Dijkstra最短路原创 2020-06-27 23:28:23 · 473 阅读 · 0 评论 -
PAT(Advanced)1111 Online Map Dijkstra最短路 C++实现
PAT(Advanced)1111 Online Map Dijkstra最短路 C++实现相关内容PAT(Advanced)1003 Emergency (Dijkstra最短路) (邻接矩阵)C++实现DijkstraSSSP(单源最短路径求解)(迪克斯特拉算法堆优化)(Java实现)(邻接矩阵)(优先级队列)(堆优化)Dijkstra最短路(迪克斯特拉算法)(C++实现)(邻接矩阵)PAT(Advanced)1087 All Roads Lead to Rome Dijkstra最短路 C+原创 2020-06-27 22:38:18 · 394 阅读 · 0 评论 -
PAT(Advanced)1102 Invert a Binary Tree C++实现
PAT(Advanced)甲级1102 Invert a Binary Tree C++实现题目链接1102 Invert a Binary Tree题目大意给定二叉树将其左右子树逆转,输出逆转后层次遍历和中序遍历的序列算法思路根据题意及二叉树先序遍历定义,找出根节点,并从根节点开始,将二叉树根节点的左右子树交换,再递归地转换根节点的左右子树,根节点子树的左右子树也必须交换,递归地,所有结点的左右子树都交换一次即可,在输出层次遍历序列和中序遍历序列void invert(int p) {原创 2020-06-26 23:40:03 · 335 阅读 · 0 评论 -
PAT(Advanced)1053 Path of Equal Weight C++实现
PAT(Advanced)甲级1053 Path of Equal Weight C++实现题目链接1053 Path of Equal Weight题目大意给定一棵有N个节点和M个非叶子节点且所有节点都带正整数权值的树以及一个给定权值S,求解从根节点到叶子结点路径累积权值为S的所有路径,并按照非递增序列输出算法思路根据树的性质以及树的层次遍历定义,求解路径累积权值为给定值的序列,类似于图的DFS,即树的先序遍历,从根节点递归到叶子节点,若未到达叶子节点但累积权值已经大于S,则往下的路径无序继续原创 2020-06-26 23:08:26 · 288 阅读 · 0 评论 -
PAT(Advanced)1110 Complete Binary Tree C++实现
PAT(Advanced)甲级1110 Complete Binary Tree C++实现题目链接1110 Complete Binary Tree题目大意从0到N-1个节点,给定每个节点的左右孩子,求给定二叉树是否为完全二叉树,若是则输出YES以及最右边的叶子节点的序号,否则输出NO以及根节点序号算法思路根据题意要求和输入数据,先找到二叉树根节点,即没有父亲节点的节点,根据完全二叉树性质和层序遍历定义,对完全二叉树进行层序遍历,将包括空指针的所有的节点入队,若遇到第一个空指针,则后面必然没有原创 2020-06-26 20:44:22 · 341 阅读 · 0 评论 -
PAT(Advanced)1118 Birds in Forest C++实现 并查集 路径压缩
PAT(Advanced)甲级1118 Birds in Forest C++实现 并查集 路径压缩题目链接1118 Birds in Forest题目大意给定N张照片,N张照片中有M只鸟,题目认为出现在同一张照片中的鸟属于同一棵树,求解N张照片中存在几棵树、几只鸟,鸟的编号是从1到某个值,对于Q次询问,每次询问为两只鸟的序号,若两只鸟出现在同一棵树上,输出Yes,否则输出No算法思路根据题意,若两张照片中出现同一只鸟则说明两张照片的所有鸟在一棵树上,依次类推,利用带路径压缩的并查集,对于每张照原创 2020-06-26 12:24:35 · 326 阅读 · 0 评论 -
PAT(Advanced)1144 The Missing Number
PAT(Advanced)甲级1144 The Missing Number C++实现题目链接1144 The Missing Number题目大意给定一个整数序列,求解最小未出现在序列中的正整数算法思路根据题目要求,求解最小未出现在序列中的正整数,序列长度N最大为10e5,则说明该最小未出现的正整数必然小于等于N + 1,开辟数组大小至少为N+2,若输入的数为非正数或大于N则忽略,否则在布尔数组置对应下标的值为true,用于后续遍历布尔数组求解结果AC代码/*author : ecli原创 2020-06-26 10:15:33 · 346 阅读 · 0 评论 -
PAT(Advanced)1087 All Roads Lead to Rome Dijkstra最短路 C++实现
PAT(Advanced)甲级1087 All Roads Lead to Rome相关内容PAT(Advanced)1003 Emergency (Dijkstra最短路) (邻接矩阵)C++实现DijkstraSSSP(单源最短路径求解)(迪克斯特拉算法堆优化)(Java实现)(邻接矩阵)(优先级队列)(堆优化)Dijkstra最短路(迪克斯特拉算法)(C++实现)(邻接矩阵)题目链接1087 All Roads Lead to Rome题目大意给定出发城市,存在的路线及路线长度,目的地原创 2020-06-25 16:57:57 · 384 阅读 · 0 评论 -
PAT(Advanced)1048 Find Coins C++实现
PAT(Advanced)甲级1048 Find Coins C++实现题目链接1048 Find Coins题目大意给定一组N个硬币面值序列和一个需要由两个硬币拼凑成的面值M,若能从序列中找到两个序列拼凑成对应面值,则输出两个面值,若存在多对这样的硬币,则输出最小的面值所在那一对,若找不到则输出No Solution算法思路根据题意,面值序列最大面值不超过500,则两个硬币最大面值不超过1000,开辟一个数组存放,数组下标为面值,数组内容为对应面值的硬币个数,第一个硬币面值从0开始到M,判断第原创 2020-06-22 21:55:55 · 389 阅读 · 0 评论 -
PAT(Advanced)1147 Heaps (C++实现)
PAT(Advanced)1147 Heaps (C++实现)题目链接1147 Heaps题目大意给定各不相同的非负整数层序遍历序列,判断该序列是否为堆结构,若是最大堆则输出Max Heap,若是最小堆则输出Min Heap,若不满足堆结构则输出Not Heap,下一行输出后序遍历序列算法思路根据堆的定义,左右子树的关键字小于根节点的二叉树为最大堆,反之则为最小堆,递归地判断当前子树是否满足堆性质、当前子树的左右子树是否满足堆性质,叶子节点直接返回true,递归结束后即可得到结果,先判断是否为最原创 2020-06-22 00:00:25 · 333 阅读 · 0 评论 -
PAT(Advanced)1064 Complete Binary Search Tree C++实现
PAT(Advanced)1064 Complete Binary Search Tree C++实现题目链接1064 Complete Binary Search Tree题目大意给定没有相同元素的非负整数序列,构造其完全二叉排序树并输出层次遍历序列,完全二叉排序树即为同时满足二叉排序树和完全二叉树要求的二叉树算法思路中序遍历构造完全二叉搜索树,保证叶子节点集中在最后一层左边,满足完全二叉树定义,根据二叉搜索树定义,中序遍历序列递增有序。每次递归到底选取优先级队列关键字最大的元素,先遍历右子树原创 2020-06-21 21:40:52 · 393 阅读 · 0 评论