![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DFS与递归及回溯
dfs+递归
向光.
路过人间,绝非一瞬间.
展开
-
⭐北邮复试刷题LCR 052. 递增顺序搜索树__DFS (力扣119经典题变种挑战)
给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,5,null,7]树中节点数的取值范围是 [1, 100]输入:root = [5,1,7]原创 2024-02-21 23:14:47 · 357 阅读 · 0 评论 -
⭐北邮复试刷题106. 从中序与后序遍历序列构造二叉树__递归分治 (力扣每日一题)
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输入:inorder = [-1], postorder = [-1]inorder 和 postorder 都由 不同 的值组成。输出:[3,9,20,null,null,15,7]postorder 保证是树的后序遍历。原创 2024-02-21 22:51:05 · 453 阅读 · 0 评论 -
⭐北邮复试刷题105. 从前序与中序遍历序列构造二叉树__递归分治 (力扣每日一题)
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。同时注意某子树的中序序列长度和前序序列长度必为相等,可依据此性质确定递归时inorder数组和preorder数组下标起点终点该如何选择;输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输入: preorder = [-1], inorder = [-1]原创 2024-02-21 22:48:22 · 352 阅读 · 0 评论 -
⭐北邮复试刷题589. N 叉树的前序遍历__DFS (力扣每日一题)
输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:[1,2,3,6,7,11,14,4,8,12,5,9,13,10]给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历。输入:root = [1,null,3,2,4,null,5,6]本题直接常规DFS即可,具体见代码注释;输出:[1,3,5,6,2,4]原创 2024-02-18 17:37:15 · 310 阅读 · 0 评论 -
LeetCode.565. 数组嵌套____暴力dfs->剪枝dfs->原地修改
索引从0开始长度为N的数组A,包含0到N-1的所有整数。找到最大的集合S并返回其大小,其中S[i]={A[i],A[A[i]],A[A[A[i]]],…假设选择索引为i的元素A[i]为S的第一个元素,S的下一个元素应该是A[A[i]],之后是A[A[A[i]]]…以此类推,不断添加直到S出现重复的元素。每次任选一个起点开始,接着使其不断的走,边走边进行标记,直到无法继续走后,判断长度即可,接着标记数组进行回溯,从下一个起点再继续走。输入A=[5,4,0,3,1,6,2]...原创 2022-07-21 09:52:21 · 195 阅读 · 0 评论 -
LeetCode.814. 二叉树剪枝____DFS
给你二叉树的根结点root,此外树的每个结点的值要么是0,要么是1。节点node的子树为node本身加上所有node的后代。输入root=[1,1,0,1,1,0,1,0]输入root=[1,0,1,0,0,0,1]输入root=[1,null,0,0,1]返回移除了所有不包含1的子树的原二叉树。输出[1,1,0,1,1,null,1]输出[1,null,0,null,1]输出[1,null,1,null,1]...原创 2022-07-21 09:35:14 · 104 阅读 · 0 评论 -
LeetCode.558. 四叉树交集___分治
LeetCode.558.四叉树交集___分治原创 2022-07-17 13:07:24 · 1702 阅读 · 0 评论 -
LeetCode.676. 实现一个魔法字典____暴力与字典树优化(超级详细解答字典树解法~~【内附递归算法实现流程详细介绍】)
设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。实现 MagicDictionary 类:提示:关于字典树,我们可以通过一个视频Trie前缀树和一个博客Java实现Trie前缀树。借助,我们可以先把字符串数组中的字符串放进字典树,接着我们对于每次要查找的,将其代入进行逐个字符的查找。查找时,由于是树状结构,我们可以使用递归+ 回溯,即建立一个递归函数 ,其中node表原创 2022-07-13 21:45:41 · 266 阅读 · 0 评论 -
LeetCode.556. 下一个更大元素 III___暴力DFS与双指针查找
给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n 。如果不存在这样的正整数,则返回 -1 。注意 ,返回的整数应当是一个 32 位整数 ,如果存在满足题意的答案,但不是 32 位整数 ,同样返回 -1 。首先最直白的想法就是我们可以求出所有的排列,然后从这些排列中找出恰好大于n的数即可。但是这种方法会爆内存。需要注意的是在递归回溯删除的时候,由于这里和子集不一样,是存在重复元素的,所以不能直接根据元素删,因为可能会删成别的位置的元素,所以我们原创 2022-07-04 15:59:51 · 82 阅读 · 0 评论 -
LeetCode.515. 在每个树行中找最大值___逐一BFS+DFS+按层BFS
给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。首先我们采取最朴素的解法,即我们要找的是二叉树中每一层的最大值,显然我们可以使用广搜遍历二叉树,对每一层的元素进行逐个取出,并始终维护一个最大值,同时取出元素后还要将其左右非空子元素放进队列尾部。这里我们在进行时是如何辨别该元素是哪一层的呢?我们使用自定义类State来实现,即可维护每一个节点元素的深度。按照该题的情景是应该使用广搜的,但是使用深搜同样可以解决,我们只要搭配一个进行即可,这样在遍历二叉树的时候我们只要根据原创 2022-06-27 11:29:15 · 87 阅读 · 0 评论 -
Leetcode.690. 员工的重要性___递归与哈希优化
690. 员工的重要性给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id 。比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。那么员工 1 的数据结构是 [1, 15, [2]] ,员工 2的 数据结构是 [2, 10, [3]] ,员工 3 的数据结构是 [3, 5, []] 。注意虽然员工 3 也是员工 1 的一个下属,但是由于 并不是直系 下属,因此没有体现在员工 1 的数据结构中。现在输入一个原创 2022-02-16 07:40:05 · 98 阅读 · 0 评论 -
Leetcode.78. 子集__DFS算法剖析讲解
78. 子集给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]] 提示:1 <= nums.length <= 10-10 <= nums[i] <= 10nums原创 2022-01-19 23:47:37 · 556 阅读 · 0 评论 -
Leetcode.面试题 08.12. 八皇后__DFS+回溯
面试题 08.12. 八皇后设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。注意:本题相对原题做了扩展示例: 输入:4 输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] 解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q", "Q.原创 2022-01-12 22:49:01 · 169 阅读 · 0 评论 -
Leetcode.46. 全排列——DFS+回溯
46. 全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]] 提示:1 <= nums.length <= 6-10 <= nums原创 2022-01-12 21:37:03 · 187 阅读 · 0 评论 -
生物群落问题——递归
问题描述:在一个平面区域内有n*n个子区域,每个区域内存在0-3个生物群落,若该区域内生物群落达到4,则所有生物将平均向相邻的4个区域迁移;当向某个指定区域内投放食物时,该区域内的生物群落将加1,编写程序模拟该环境。题解:所谓扩散问题,其实就是递归问题,我们每次以投食点作为起点,判断是否会向四个方向扩散,扩散则继续判断下一个被扩散到的点即可;代码:#include <stdlib.h>#include <iostream>#define N 5using namesp原创 2022-01-09 08:29:26 · 260 阅读 · 0 评论 -
蓝桥杯:带分数——全排列+回溯
带分数100 可以表示为带分数的形式:100 = 3 + 69258 / 714。还可以表示为:100 = 82 + 3546 / 197。注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。类似这样的带分数,100 有 11 种表示法。输入格式从标准输入读入一个正整数N (N<1000*1000)输出格式程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。注意:不要求输出每个表示,只统计有多少表示法!样例输入1100样例输出111样例输入2原创 2022-01-07 18:59:14 · 146 阅读 · 0 评论 -
蓝桥杯:第39级楼梯——DP
第39级楼梯小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说- -共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案。题解:由题可知为入门级DP问题的变形。我们设此时在第i阶台阶,那么他这个位置可以为从第i-1阶台阶跨一步走到,也可从i-2阶台阶跨两步得到,因此有DP转移方程:dp[原创 2022-01-07 18:50:55 · 499 阅读 · 0 评论 -
蓝桥杯:迷宫——BFS
迷宫下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。010000 000100 001001 110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式,其使用的步数最少,在步数最原创 2022-01-07 18:48:11 · 205 阅读 · 0 评论 -
蓝桥杯:李白打酒——DFS
标题:李白打酒话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:无事街上走,提壶去打酒。逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。原创 2022-01-07 18:38:37 · 163 阅读 · 0 评论 -
蓝桥杯:穿越雷区——DFS
标题:穿越雷区X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示正负能量辐射区。例如:A + - + -- + - - +- + + + -+ - + - +B + - + -坦克车只能水平或垂直方向上移动到相邻的区。数据格式要求:输入第一行是一个整数n,表示方阵的大小原创 2022-01-07 18:32:09 · 262 阅读 · 1 评论 -
算法设计大赛21题---三升序列(DFS)
算法设计大赛21.矩阵为:VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAGSDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQFZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGABDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRLYVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKB原创 2021-11-23 21:27:21 · 147 阅读 · 0 评论 -
Leetcode.547. 省份数量---DFS/并查集
547. 省份数量有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输入:原创 2021-11-23 16:51:40 · 171 阅读 · 0 评论 -
Leetcode.130. 被围绕的区域---DFS+标记法(反面出发一招致命)
130. 被围绕的区域给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例 1:输入:board = [["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]输出:[["X","X","X","X"],["X","X","X","X"],["X","X","X","X"],["X","O","X"原创 2021-07-23 17:46:01 · 102 阅读 · 0 评论 -
leetcode.200. 岛屿数量---DFS+记忆化
200. 岛屿数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:grid原创 2021-06-27 21:06:58 · 92 阅读 · 1 评论 -
leetcode.1239. 串联字符串的最大长度---DFS回溯+位运算
1239. 串联字符串的最大长度给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串,如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。请返回所有可行解 s 中最长长度。示例 1:输入:arr = ["un","iq","ue"]输出:4解释:所有可能的串联组合是 "","un","iq","ue","uniq" 和 "ique",最大长度为 4。示例 2:输入:arr = ["cha","r","act","ers"]输出:6解释:可能原创 2021-06-19 20:35:19 · 141 阅读 · 0 评论 -
leetcode.494. 目标和---DFS+DP(背包问题)
494. 目标和给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1” 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。示例 1:输入:nums = [1,1,1,1,1], target = 3输出:5解释:一共有 5 种方法让最终原创 2021-06-07 16:33:20 · 260 阅读 · 0 评论 -
203. 移除链表元素---递归
203. 移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[] 提示:列表中的节点在范围 [0, 104] 内1 <= N原创 2021-06-05 09:21:07 · 471 阅读 · 0 评论 -
leetcode. 993. 二叉树的堂兄弟节点---DFS
993. 二叉树的堂兄弟节点在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。示例 1:输入:root = [1,2,3,4], x = 4, y = 3输出:false示例 2:输入:root原创 2021-05-17 21:07:27 · 76 阅读 · 0 评论 -
周赛:leetcode.5759. 找出所有子集的异或总和再求和---DFS
5759. 找出所有子集的异或总和再求和一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果;如果数组为 空 ,则异或总和为 0 。例如,数组 [2,5,6] 的 异或总和 为 2 XOR 5 XOR 6 = 1 。给你一个数组 nums ,请你求出 nums 中每个 子集 的 异或总和 ,计算并返回这些值相加之 和 。注意:在本题中,元素 相同 的不同子集应 多次 计数。数组 a 是数组 b 的一个 子集 的前提条件是:从 b 删除几个(也可能不删除)元素能够得到 a 。示例 1:原创 2021-05-16 17:01:43 · 141 阅读 · 0 评论 -
leetcode.872. 叶子相似的树----DFS
872. 叶子相似的树请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。示例 1:输入:root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6原创 2021-05-10 14:43:39 · 70 阅读 · 0 评论 -
leetcode.938. 二叉搜索树的范围和----二叉搜索树的中序遍历(递归呗)
938. 二叉搜索树的范围和给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23 提示:树中节点数目在范围 [1, 2 * 104] 内1 <= Node.val &l原创 2021-04-27 15:14:24 · 59 阅读 · 0 评论 -
2019年第十届蓝桥杯省赛C++A组【第六题:完全二叉树的权值】----DFS+递归
第六题试题 F: 完全二叉树的权值时间限制: 1.0s 内存限制: 256.0MB 本题总分:15 分问题描述给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是 A1, A2, · · · AN,如下图所示:现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。注:根的深度是 1。输入格式第一行包含一个整数 N。第二行包含 N 个整数 A1, A2, ·原创 2021-04-17 19:34:01 · 125 阅读 · 0 评论 -
力扣395. 至少有 K 个重复字符的最长子串----递归+dfs实现分治
395. 至少有 K 个重复字符的最长子串给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。示例 1:输入:s = "aaabb", k = 3输出:3解释:最长子串为 "aaa" ,其中 'a' 重复了 3 次。示例 2:输入:s = "ababbc", k = 2输出:5解释:最长子串为 "ababb" ,其中 'a' 重复了 2 次, 'b' 重复了 3 次。 提示:1 <= s.原创 2021-04-16 10:46:54 · 239 阅读 · 0 评论 -
蓝桥杯------试题 H: 走方格-----dfs+动态规划
法一:dfs+递归#include <bits/stdc++.h>using namespace std;int a[40][40];int res = 0;int n;int m;bool rcheck(int y)//检查向右走是否越界{ if(y+1<=m) return 1; else return 0;}bool dcheck(int x)//检查向下走是否越界{ if(x+1<=n) return 1; else return原创 2021-04-14 19:28:40 · 155 阅读 · 0 评论 -
力扣 783. 二叉搜索树节点最小距离---二叉搜索树的中序遍历法
783. 二叉搜索树节点最小距离给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。注意:本题与 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同示例 1:输入:root = [4,2,6,1,3]输出:1示例 2:输入:root = [1,0,48,null,null,12,49]输出:1 提示:树中节点数目在范围 [2, 100] 内原创 2021-04-13 16:25:07 · 123 阅读 · 0 评论 -
力扣101. 对称二叉树(结构体与递归)
101. 对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:进阶:你可以运用递归和迭代两种方法解决这个问题吗?题解:一个简单的递归运用在结构体指针上的问题,注意指向即可。代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * str原创 2021-03-28 15:01:55 · 165 阅读 · 0 评论 -
Tower of Hanoi---C代码实现与力扣题目的应用
Tower of Hanoi相传在很久以前,有个寺庙里的几个和尚整天不停地移动着 64 个盘子,日复一日,年复一年。据说,当 64 个盘子全部移完的那一天就是世界末日…问题描述有 A,B,C 三根柱子,A 上面有 n 个盘子,我们想把 A 上面的盘子移动到 C 上,但是要满足以下三个条件:·每次只能移动一个盘子;·盘子只能从柱子顶端滑出移到下一根柱子;·盘子只能叠在比它大的盘子上。分析:这是一道经典的函数递归问题,也是一道递归的入门题目,直接进行分析较难看出,故我们可以先从一些简单的情况进原创 2021-01-05 17:56:21 · 175 阅读 · 0 评论 -
力扣完全二叉树的节点个数递归详解
题目给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入:1/ 2 3/ \ /4 5 6输出: 6首先明确本题通过递归解题的实质其实就是将每一个节点都当成了根部!!而左右节点只是决定其什么时候停止的标志而已。即其不断的加一就是因为不断的将节点当成根部而已。而我们只要定.原创 2020-11-24 21:34:13 · 257 阅读 · 2 评论 -
c语言刷题
力扣峰值数组问题一开始想的有些偏差,过于在求峰值钻了死脑筋,本来想要用函数递归思想来进行数组排序进而直接得到峰值对应的编码,但在返回时发现该数组已经变化了。代码bool validMountainArray(int* A, int ASize){int i,j,k;j=0;//需要先初始化,不然若是一个在求最大值部分只进行一次运算的数组会导致j返回一个未知的值if(A==NULL||ASize==0||ASize<3)//把空数组挖掉{ goto end;}if(ASize原创 2020-11-03 20:55:33 · 830 阅读 · 0 评论 -
蓝桥杯2016年第七届C/C++省赛B组第六题-方格填数---全排列问题
题目描述题解:本题可以考虑dfs+递归解决,但过于复杂,因此我们可以借助c++中的prev_permutation函数来解决。即我们将所有数的全排列都写出来,然后一个一个去比对是否满足题意即可。比赛中很适合这样解决。代码:#include<iostream>#include<algorithm>#include<math.h>//或直接使用一个万能头文件#include<bits/stdc++.h>using namespace std原创 2021-04-11 10:40:42 · 89 阅读 · 0 评论