![](https://img-blog.csdnimg.cn/20200506151908317.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
递归的使用-综合
常用递归的合集
重剑DS
学的越多,越觉无知
展开
-
501. 二叉搜索树中的众数(C++)
题目详情给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2返回[2].提示:如果众数超过1个,不需考虑输出顺序进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)...原创 2020-09-24 12:39:36 · 219 阅读 · 0 评论 -
679. 24 点游戏(C++)---递归回溯法解题
题目详情你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。示例 1:输入: [4, 1, 8, 7]输出: True解释: (8-4) * (7-1) = 24示例 2:输入: [1, 2, 1, 2]输出: False注意:除法运算符 / 表示实数除法,而不是整数除法。例如 4 / (1 - 2/3) = 12 。 每个运算符对两个数进行运算。特别是我们不能用 - 作为一元运算符。例如,[1, 1, 1, 1] 作为输入时,表达式原创 2020-08-22 08:47:39 · 690 阅读 · 0 评论 -
111. 二叉树的最小深度(C++)--- 递归 / BFS解题
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.——题目难度:简单dfs解题代码/** * Definition for a binary tree node. * struct TreeNode { * ...原创 2020-08-21 08:38:35 · 244 阅读 · 0 评论 -
109. 有序链表转换二叉搜索树(C++)
题目详情给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10 5——题目难度:中等-解题代码/...原创 2020-08-18 08:59:57 · 236 阅读 · 0 评论 -
110. 平衡二叉树(C++)
题目详情给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \...原创 2020-08-17 08:54:08 · 132 阅读 · 0 评论 -
133. 克隆图(C++)
题目详情给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。...原创 2020-08-12 14:24:13 · 224 阅读 · 0 评论 -
93. 复原IP地址(C++)---递归 + 回溯 + 剪枝
题目详情给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用'.'分隔。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]——题目难度:中等-代码如下class Solution {private: vector<string> ans; public: vec...原创 2020-08-09 10:33:33 · 575 阅读 · 0 评论 -
95. 不同的二叉搜索树 II (C++)---递归解题
题目详情给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。示例:输入:3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ ...原创 2020-07-21 11:54:09 · 192 阅读 · 0 评论 -
112. 路径总和(C++)---简单递归解题
题目详情给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 tru...原创 2020-07-07 11:01:05 · 240 阅读 · 0 评论 -
124. 二叉树中的最大路径和(C++)---递归解题
题目详情给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \9 20 / \15 7输出: 42——题目难度:困难感觉发现了 力扣每日一题 一到周末 官方就会...原创 2020-06-21 12:14:25 · 1406 阅读 · 2 评论 -
126. 单词接龙 II(C++)---BFS、DFS解题
题目详情给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWor原创 2020-06-07 11:21:14 · 356 阅读 · 0 评论 -
面试题64. 求1+2+…+n(C++)
题目详情求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45限制:1 <= n <= 10000——题目难度:中等这道题如果使用递归法的话,其实就是最后一步当n=1或n=0的时候会有问题,因为不能使用条件判断语句,所以我们得 想方设法来解决n=1或n=0时返回1或0。这时候就可...原创 2020-06-02 08:45:15 · 304 阅读 · 0 评论 -
50. Pow(x, n) (C++)
题目详情实现pow(x,n),即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0 n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。——题目难度:中等大...原创 2020-05-11 10:41:00 · 352 阅读 · 0 评论 -
572. 另一个树的子树(C++)---递归
题目详情给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \1 2给定的树 t: 4 / \1 2返回 true,因为 t 与 s 的一个子树拥有相同...原创 2020-05-07 08:49:23 · 269 阅读 · 0 评论 -
自然数的拆分(C++)
题目详情给定自然数n,将其表示为若干自然数的和,输出所有的解。每组解从小到大排列。数字相同的不同排列算一组解。输入格式:一个自然数。输出格式:拆分式,每行一个。输入样例:4输出样例:4=1+1+1+14=1+1+24=1+34=2+24=4下面代码#include <iostream>using namespace std;void REsplit(in...原创 2020-04-05 09:44:06 · 3297 阅读 · 0 评论 -
递归构造可重复字符串(C++)
题目详情编写函数,使用递归的方法,递归地构造从顺序的m个字母中抽取n个字母组成的所有字符串。编写主函数,输入整数m和n,调用函数显示构造的字符串。输入格式:两个整数,分别表示字符数和字符串的长度,用空格隔开。数据均小于10。输出格式:构造的字符串,每行一个,末尾无空格。输入样例:4 3输出样例:AAAAABAACAADABAABBABCABDACAACBACC...原创 2020-04-05 08:29:34 · 974 阅读 · 0 评论 -
递归求两个数的最大公因数(C++)
题目详情编写函数,递归求两个整数的最大公因数。编写主函数,输入两个整数,调用函数求最大公因数,在主函数中输出。输入:两个正整数。输出:一个整数。输入样例:24 42输出样例: 6下面代码#include <iostream>using namespace std;int gcd(int p,int q) //辗转相除法求最大公因数---递归版 { if...原创 2020-04-04 12:59:53 · 3120 阅读 · 1 评论 -
递归插入排序(C++)
题目详情编写函数,对整型数组进行递归插入排序。编写函数,输入、输出数组元素。编写主函数,调用函数输入、排序、输出元素。整数个数不超过100个。输入:在一行或多行中输入若干用空隔开的整数,输入-9999表示结束。输出:在一行中输出整数,用一个空格隔开,末尾无空格。输入样例:3 2 1 5 4 -9999输出样例:1 2 3 4 5个人思路见图下面代码在这里插入代码片...原创 2020-04-04 10:41:09 · 1194 阅读 · 0 评论 -
递归逆序数组元素(C++)
题目详情编写递归函数,将数组元素逆序,函数的输入参数是数组、起始下标和元素个数。在主函数中输入元素个数和数组元素,调用函数逆序,在主函数中输出结果。设数组类型为整型,元素不超过100个。输入:元素个数n和n个元素,用空格或换行隔开。输出:逆序的数组元素,用一个空格隔开,末尾无空格。【提示】本函数不需返回值。【注意】必须用递归函数实现,否则没有意义。样例1输入:51 2 3 4 5样例...原创 2020-03-19 09:52:44 · 2506 阅读 · 0 评论 -
递归求Fibonacci序列的第n项(C++)
题目详情Fibonacci(费波那契)序列:f(0)=0f(1)=1f(n)=f(n-1)+f(n-2),n=2,3,4,…编写递归函数,计算Fibonacci序列的第n项(n=0,1,2,3,…)。在主函数中输入n,调用函数计算Fibonacci第n项,在主函数中输出结果。输入:非负整数输出:非负整数【注意】应用递归函数实现。样例1输入:6样例1输出:8下面代码#includ...原创 2020-03-19 09:42:05 · 1469 阅读 · 0 评论 -
递归求数组元素的和(C++)
题目详情编写递归函数,求数组元素的和,函数的输入参数为数组和元素个数,返回最大值。在主函数中输入元素个数和数组元素,调用函数求和,在主函数中输出结果。设数组类型为整型,元素不超过100个。输入:元素个数n和n个元素,用空格或换行隔开。输出:数组元素和。【提示】元素个数为0时返回和是0.样例1输入:61 2 3 4 5 6样例1输出:21下面代码 #include <ios...原创 2020-03-19 09:39:29 · 3673 阅读 · 0 评论 -
递归求数组元素的最大值(C++)
题目详情编写递归函数,求数组元素的最大值,函数的输入参数为数组和元素个数,返回最大值。在主函数中输入元素个数和数组元素,调用函数求最大值,在主函数中输出结果。设数组类型为整型,元素不超过100个。输入:元素个数n和n个元素,用空格或换行隔开。输出:数组元素最大值。【注意】使用递归,否则没有意义。样例1输入:612 1 2 3 14 6样例1输出:14下面代码#include &...原创 2020-03-19 09:33:51 · 2867 阅读 · 0 评论 -
递归计算1+2+3+…+n(C++)
题目详情题目内容:编写递归函数,计算1+2+3+…+n。在主函数中输入n,调用函数计算1到n的和,在主函数中输出和。输入:非负整数。输出:非负整数。【注意】应用递归函数实现,否则没有意义。输入0时,和为0.样例1输入:10样例1输出:55代码如下#include <iostream>...原创 2020-03-19 09:29:16 · 9115 阅读 · 0 评论 -
猴子吃桃(C++)
题目详情有一天,某只猴子摘了一些桃子,当时吃了一半,又不过瘾,于是就多吃了一个。以后每天如此,到第n天想吃时,发现就只剩下一个桃子。输入n,表示到第n天剩下1个桃子,请计算第一天猴子摘的桃子数。程序运行结果如下:101534要求时间限制:2000ms内存限制:32000kb输入格式:输入一个整数n,n>0,表示到第n天剩下1个桃子。输出格式:一个整数,表示第1天摘的桃子数...原创 2020-02-25 20:50:43 · 3203 阅读 · 0 评论 -
整数分解为若干项之和(C语言)
题目详情将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,…。编程求出正整数N的所有整数分解式子。要求时间限制: 800 ms内存限制: 64 MB代码长度限制: 16 K输入格式:每个输入包含一个测试用例,即正整数N (N>0&&N<=30)。输出格式:按递增顺序输出N的所有整数分解式子。递增顺序...原创 2020-02-11 22:15:58 · 13047 阅读 · 7 评论 -
Hanoi(汉诺塔)问题
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。题目可以问下当有几个盘子需要移动几次来完成呢(加...原创 2019-12-15 19:58:46 · 874 阅读 · 0 评论 -
#函数# 阶乘(但是n要小于13)
#函数# 阶乘(但是n要小于13) //[例7.7] 用递归方法求n!#include <stdio.h> int fac(int n) { int f; if(n<0) printf("n<0,date error!"); else if(n==0||n==1) f=1; else f=fac(n-1)*n; return f;...原创 2019-12-11 14:22:11 · 469 阅读 · 0 评论