<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[supupupupupup的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/supupupupupup</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; supupupupupup]]></copyright><item><title><![CDATA[最小生成树的唯一性]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/139320881</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/139320881</guid><author>supupupupupup</author><pubDate>Thu, 30 May 2024 12:37:49 +0800</pubDate><description><![CDATA[kruskal,第一遍保存重复权值的边，然后把每一条保存的删掉一次做kruskal，这道题代码有好几个亮点重点降低复杂度，首先是路径压缩新方法，再是qsort对结构体排序；题目：给定一个带权无向图，如果是连通图，则至少存在一棵最小生成树，有时最小生成树并不唯一。本题就要求你计算最小生成树的总权重，并且判断其是否唯一。]]></description><category></category></item><item><title><![CDATA[关键路径 PTA 6-32]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/139041781</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/139041781</guid><author>supupupupupup</author><pubDate>Sun, 19 May 2024 14:05:12 +0800</pubDate><description><![CDATA[其中G是基于邻接表及逆邻接表存储表示的有向图。]]></description><category></category></item><item><title><![CDATA[Is Topological Order pta 6-29]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/139029624</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/139029624</guid><author>supupupupupup</author><pubDate>Sat, 18 May 2024 18:56:45 +0800</pubDate><description><![CDATA[先讲思路，，题目在最后；插个图方便理解：这道题属于拓扑排序的运用，可以用拓扑排序的思路做，but，：遍历Seq的每一个元素 Seq[ i ] 并确定其在 图Graph 中对应的下标 v ,比如：5 2 1 3 6；i=2时v对应图中1（此时5和2都已经被收集），1指向2和3，而2已被收集，说明不是拓扑排序，return false；题目：SeqGraph。]]></description><category></category></item><item><title><![CDATA[最小生成树（克鲁斯卡尔算法）PTA 6-27]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/138953680</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/138953680</guid><author>supupupupupup</author><pubDate>Thu, 16 May 2024 11:42:32 +0800</pubDate><description><![CDATA[其中G是基于邻接矩阵存储表示的无向图。]]></description><category></category></item><item><title><![CDATA[最短路径（弗洛伊德算法）PTA 6-25]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/138871033</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/138871033</guid><author>supupupupupup</author><pubDate>Wed, 15 May 2024 13:20:48 +0800</pubDate><description><![CDATA[其中G是基于邻接矩阵存储表示的有向图。]]></description><category></category></item><item><title><![CDATA[Shortest Path [4] PTA 6-22]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/138859459</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/138859459</guid><author>supupupupupup</author><pubDate>Tue, 14 May 2024 16:47:54 +0800</pubDate><description><![CDATA[两种答案，先说思路，，第二种答案是对第一种的改良，但是两种思路一样，题目在最后：建立在Dijkstra算法的基础上，多加了一个数组PathNeS来记录从S到每个点经过的最少边数，对于和S相邻的边，我们初始化其PathNeS为1；在while的每次循环里确定v后，在for循环里，我们先,若等于，则若满足，则更新PathNeS[i]和path[i],使其通过v来到达；（注意这道题要求到这个点最短时边数最少的路）再判断是否收集i和通过v到i是否会比原先记录的短，若满足，更新dist和path时也；]]></description><category></category></item><item><title><![CDATA[Shortest Path [3] pta]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/138820685</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/138820685</guid><author>supupupupupup</author><pubDate>Mon, 13 May 2024 21:38:32 +0800</pubDate><description><![CDATA[图论里建立在Dijkstra算法上的求最短路数量的算法，pta原题]]></description><category></category></item><item><title><![CDATA[二叉树求结点数pta (超级简洁简单)]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/138726815</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/138726815</guid><author>supupupupupup</author><pubDate>Sat, 11 May 2024 19:02:51 +0800</pubDate><description><![CDATA[其中T是二叉树根节点的地址。]]></description><category></category></item><item><title><![CDATA[Strongly Connected Components pta]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/138324216</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/138324216</guid><author>supupupupupup</author><pubDate>Mon, 29 Apr 2024 20:29:01 +0800</pubDate><description><![CDATA[有向图求强连通分量1，比如这个图·，3这个点如果从0出发是遍历不到的，所以我们把tarjan函数在给定函数里调用，从0出发遍历一遍，如果未被访问就对该点调用一次tarjan函数。2，tarjan函数里有一个if(G->Array[x]),如果没有这个判断，则对于孤立不连通的一个结点会段错误，其对于的Array[x]是NULL。]]></description><category></category></item><item><title><![CDATA[笔记笔记笔记]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/138012491</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/138012491</guid><author>supupupupupup</author><pubDate>Sat, 20 Apr 2024 21:39:09 +0800</pubDate><description><![CDATA[【代码】笔记笔记笔记。]]></description><category></category></item><item><title><![CDATA[A+B with Binary Search Tree(pta)]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137676594</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137676594</guid><author>supupupupupup</author><pubDate>Fri, 12 Apr 2024 13:14:42 +0800</pubDate><description><![CDATA[第二种方法（正确的）思路：先对root2左根右遍历得到升序序列并存在数组B里，遍历完后B的下标ib正好在最后一个元素的位置，再对root1左根右升序遍历，同时对每一个结点的值T->val，先和a[ia]比较是否相等，再和B[ib]比较，如果二者的和大于target就ib--，B向前走，直到等于或者小于时即可跳出，若等于还要存储在a里。缺点：时间复杂度接机N^2,对于重复结点的判断没有必要专门遍历一遍a，完全可以直接和a[i-1]去比，因为按照升序序列遍历，相同的两个节点本身就连在一起。]]></description><category></category></item><item><title><![CDATA[Height of BST（pta）（数组模拟二叉树）]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137552862</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137552862</guid><author>supupupupupup</author><pubDate>Tue, 09 Apr 2024 15:16:30 +0800</pubDate><description><![CDATA[第一种思路：先序遍历根左右，我创建一个数组T，来存放BST，create函数实现一边建树一边计算高度，建树，先for循环找出比当前根大的第一个结点的下标作为ir，即右子树在preorder的起点，create的四个参数分别是：T-创建的BST，preorder-当前处理的子树的起点数组，n-当前处理子树的元素个数，ic-当前处理子树的根在T中存放的位置下标。但是算法走向差不多。第二种思路和第一种差不多，免去了创建T的过程，相对简单一点，也不用计算左右子树在T中的位置，还是顺着创建树的思路在走。]]></description><category></category></item><item><title><![CDATA[IsCBST(pta)]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137525882</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137525882</guid><author>supupupupupup</author><pubDate>Mon, 08 Apr 2024 22:11:27 +0800</pubDate><description><![CDATA[题目是英文，大概就是先把输入的数组变成二叉搜索树树，再判断是否是完全二叉树，并且把先序遍历的结果存在A里。这道题没有给树结构体所以用数组做，存储有点像堆，区别是这个。]]></description><category></category></item><item><title><![CDATA[二叉搜索树中的公共祖先pta]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137480013</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137480013</guid><author>supupupupupup</author><pubDate>Sun, 07 Apr 2024 22:11:34 +0800</pubDate><description><![CDATA[其中Tree的定义如下：Tree Left;Tree Right;函数LCA须返回树T中两个结点u和v的最近公共祖先结点的键值。若u或v不在树中，则应返回ERROR。]]></description><category></category></item><item><title><![CDATA[是否二叉搜索树pta]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137479832</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137479832</guid><author>supupupupupup</author><pubDate>Sun, 07 Apr 2024 21:57:56 +0800</pubDate><description><![CDATA[其中BinTree结构定义如下：函数IsBST须判断给定的T是否二叉搜索树，即满足如下定义的二叉树：定义：一个二叉搜索树是一棵二叉树，它可以为空。非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树都是二叉搜索树。如果T是二叉搜索树，则函数返回true，否则返回false。]]></description><category></category></item><item><title><![CDATA[单链表的分段逆转pta（超级简单简洁）]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137243761</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137243761</guid><author>supupupupupup</author><pubDate>Mon, 01 Apr 2024 19:25:08 +0800</pubDate><description><![CDATA[题目在最后面，先说思路，创建一个p和pre指向L的后一个结点（p是每次都先后走，便于a记录数据，而pre是每一小段的起点，集齐K个后，以pre为起点开始放数据），一个数组a用来记录当前一段的所有数据，每次先把p的数据放入a里面，然后i++；在后面判断i是否等于K，也就是是否集齐K个，及其即可逆转，若满足则将a中元素从i-1到0一个个放入pre->Data中，完成当前一段的逆转，这段代码巧妙在如果最后一段不满足K个，就不会逆转，省去了判断，超级简洁，测试点一把过。]]></description><category></category></item><item><title><![CDATA[二叉树的所有路径 sprintf函数 递归]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137211356</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137211356</guid><author>supupupupupup</author><pubDate>Sun, 31 Mar 2024 22:33:13 +0800</pubDate><description><![CDATA[通过这道题的引用，学习sprintf函数，以及DFS，巧妙地使用一个countpath数组（这里注意是整型，所有后面用了sprintf函数来存入元素）记录了每一条路，虽然每一次调用时该数组的名称是一样的，但是每条不同路径里(也就是T->left或者T->right)countpath都不一样，再在遇到叶子结点是，动态分配一块空间char类型的stor来从count path中读出该条路径的元素。，返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。]]></description><category></category></item><item><title><![CDATA[图的邻接矩阵实现简易版(考试简易实现)]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137175516</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137175516</guid><author>supupupupupup</author><pubDate>Sat, 30 Mar 2024 15:56:52 +0800</pubDate><description><![CDATA[数据结构和图]]></description><category></category></item><item><title><![CDATA[1382.将二叉搜索树变平衡]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137154509</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137154509</guid><author>supupupupupup</author><pubDate>Fri, 29 Mar 2024 19:59:17 +0800</pubDate><description><![CDATA[思路：先用中序遍历一遍，由于二叉搜索树的特殊性，左根右得到的便是一个升序数组，所以不用排序即可直接递归加二分查找来创建树。这个递归记录二叉树结点的方法很nice，用一个记录数组下标的量int* pos，记录到数组int arr[]里，中值arr[mid]作为每一次的根。的二叉搜索树，新生成的树应该与原来的树有着相同的节点值。这不是唯一的正确答案，[3,1,4,null,2,null,null] 也是一个可行的构造方案。对比我的版本，我的是创建了一个完全二叉平衡搜索树。你一棵二叉搜索树，请你返回一棵。]]></description><category></category></item><item><title><![CDATA[树的同构（pta）]]></title><link>https://blog.youkuaiyun.com/supupupupupup/article/details/137091156</link><guid>https://blog.youkuaiyun.com/supupupupupup/article/details/137091156</guid><author>supupupupupup</author><pubDate>Wed, 27 Mar 2024 23:03:03 +0800</pubDate><description><![CDATA[题目直接看陈越老师的视频p39；或者pta树的最后一题;实现：树由结构数组实现，一个结点里放了数据和左右结点的数组下标(left和right)；]]></description><category></category></item></channel></rss>