【递归、搜索与回溯算法】第七节.257. 二叉树的所有路径和46. 全排列

作者简介:大家好,我是未央;

博客首页:************************************************************************************************************************************************************************************************************************************************************未央.303****************************************************************************************************************************************************************************************************************************************************************

系列专栏:递归、搜索与回溯算法

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!!!

文章目录

  • 前言
  • 一、二叉树的所有路径
  • 1.1 题目描述
  • 1.2 题目解析
  • 1.2.1 算法原理
  • 1.2.2 代码编写
  • 二、全排列
  • 2.1 题目描述
  • 2.2 题目解析
  • 2.2.1 算法原理
  • 2.2.2 代码编写
  • 总结

前言


一、二叉树的所有路径

1.1 题目描述

描述:

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。


提示:

  • 树中节点的数目在范围 [1, 100]
  • -100 <= Node.val <= 100

示例1:


示例2:


1.2 题目解析

1.2.1 算法原理

本题我们可以采用递归的方法解决;

而要写好一个递归,首先就要知道****递归的三部曲:

第一步:

先找一下是否有和主问题相同的子问题!!!! **----->**关系到函数头的设计;


第二步:

**只需要关心某一个子问题是如何解决即可!!!!****----->**关系到函数体的书写;


第三步:

最后再****注意一下递归函数的出口即可;


所以我们首先就要****思考以上三个问题的解决:

第一步:函数头

我们题目要求

而将两个链表合并就成了和主问题相同的子问题;

而函数头就和题目中给定的函数头一样;


第二步:函数体

我们要找到某一个子问题如何解决;

子问题即:

要解决上述子问题:

(1)

(2)

(3)


第三步:递归出口

递归出口即:


1.2.2 代码编写

代码解析:


二、全排列

2.1 题目描述

描述:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。


提示:

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • nums 中的所有整数 互不相同

示例1:


示例2:


示例3:


2.2 题目解析

2.2.1 算法原理

本题我们可以采用递归的方法解决;

而要写好一个递归,首先就要知道****递归的三部曲:

第一步:

先找一下是否有和主问题相同的子问题!!!! **----->**关系到函数头的设计;


第二步:

**只需要关心某一个子问题是如何解决即可!!!!****----->**关系到函数体的书写;


第三步:

最后再****注意一下递归函数的出口即可;


所以我们首先就要****思考以上三个问题的解决:

第一步:函数头

我们题目要求

而将两个链表合并就成了和主问题相同的子问题;

而函数头就和题目中给定的函数头一样;


第二步:函数体

我们要找到某一个子问题如何解决;

子问题即:

要解决上述子问题:

(1)

(2)

(3)


第三步:递归出口

递归出口即:


2.2.2 代码编写

代码解析:


总结

相关推荐
二进制person3 小时前
Java SE--方法的使用
java·开发语言·算法
OneQ6664 小时前
C++讲解---创建日期类
开发语言·c++·算法
JoJo_Way4 小时前
LeetCode三数之和-js题解
javascript·算法·leetcode
.30-06Springfield4 小时前
人工智能概念之七:集成学习思想(Bagging、Boosting、Stacking)
人工智能·算法·机器学习·集成学习
凌肖战6 小时前
力扣网C语言编程题:在数组中查找目标值位置之二分查找法
c语言·算法·leetcode
weixin_478689767 小时前
十大排序算法汇总
java·算法·排序算法
luofeiju7 小时前
使用LU分解求解线性方程组
线性代数·算法
SKYDROID云卓小助手8 小时前
无人设备遥控器之自动调整编码技术篇
人工智能·嵌入式硬件·算法·自动化·信号处理
ysa0510308 小时前
数论基础知识和模板
数据结构·c++·笔记·算法
GEEK零零七8 小时前
Leetcode 1103. 分糖果 II
数学·算法·leetcode·等差数列