- 博客(7)
- 收藏
- 关注
原创 二叉树单子节点统计
思路:在递归函数中创建树,返回指针即可,遇到#就return,然后创建节点,进入左子树递归,再进入右子树递归。注意,可以在左右子树递归返回之后判断左右子树是否只有一个孩子是NULL,是的话直接在这计算即可。输入:二叉树先序的一串字符,#代表空节点。输出:二叉树中只有一个孩子的节点数。如:输入AB#D##C##
2023-12-25 23:07:48 386
原创 排序二叉树C++
依次输入一个序列,小的往左子树走,大的往右子树走。第三行:中序遍历对应节点度数。为了构建一个排序二叉树。第二行:中序遍历对应层数。
2023-12-23 22:56:28 359 1
原创 任务安排问题——动态规划C++
有n个任务,每个任务必须在r[i]时及以后才能开始,p[i]为完成该任务所需剩下的单位时间。可以证明,当每个时刻都选择可以开始且剩余时间最短时,每个任务完成的时刻之和最小。
2023-12-20 08:06:09 541
原创 求最长递增子序列——动态规划DP
用动态规划求一个序列的最长严格递增子序列,将求整个序列的最长严格递增子序列分解成求以每个数字为结尾的最长严格递增子序列,最后取最大即可。
2023-12-19 23:30:57 380 1
原创 FILO序列判断C++
一个FILO序列可以理解为一个栈按原定顺序依次入栈出栈可以形成的衍生序列。所以可以通过一个输入栈以及一个正常栈来对比判断输入序列是否为FILO序列。FILO即先进后出,栈这个数据结构就是FILO这个特点的结构。
2023-12-16 23:53:10 411 1
原创 快速排序C++(非随机快排)
若为最好情况:每次取得key值都是中位数,则每次将序列分为两个大小几乎相等的子序列,可以看作生成了一个完全二叉树,即有logn层,每一层遍历n/2,n/4,n/8...次,所以总时间复杂度为O(nlogn)最坏情况:每次取的key都是最小或者最大数字,则递归下来的子序列可以看作一个只有左子树或者只有右子树的二叉树,共有n层,每一层指针都要遍历n次,所以时间复杂度为(n2)快速排序与归并排序一样利用了分治思想,将序列分为两个总体有序子序列(即子序列A中所有元素都小于子序列B),再对子序列进行排序最后合并。
2023-12-16 23:40:19 409 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人