• 【代码随想录】回溯4-排列

    46.全排列 link 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 思路 参数和返回值:排序是有序的,也就是说 [1,2] 和 [2,1] 是两个集合,所以处理排列问题就不用使用startIn...
  • 【代码随想录】回溯3-子集

    78.子集 link给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 思路如果把 子集问题、组合问题、分割问题都抽象为一棵树的话,那么组合问题和分割...
  • 【代码随想录】回溯2-分割回文串

    131.分割回文串 link 给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 思路类似于组合问题,也可以抽线成一棵树 递归参数:当前字符串的起始位置 结束条件:遍历到字符串末尾就结束,...
  • 【代码随想录】回溯1-组合问题

    回溯法回溯是递归的副产品,只要有递归就会有回溯。回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。通常可以解决以下问题: 组合问题:N个数里面按一定规则找出k个数的...
  • 【代码随想录】二叉树7-二叉搜索树的修改与改造

    701.二叉搜索树中的插入操作 link 给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在...
  • 【代码随想录】二叉树6-二叉搜索树的属性

    700.二叉搜索树中的搜索 link 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 二叉搜索树:每个节点都满足:...
  • 【代码随想录】二叉树5-公共祖先问题

    236. 二叉树的最近公共祖先 link 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节...
  • 【代码随想录】二叉树4-修改与改造

    226.翻转二叉树 link 翻转一颗二叉树 思路前序遍历或者后续遍历,在访问当前节点的时候就翻转节点的两个子树。 递归写法 1234567891011121314class Solution: def invertTree(self, ro...
  • 【代码随想录】二叉树3-属性2

    257. 二叉树的所有路径 link 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点是指没有子节点的节点。 思路要从根节点出发,记录路径,一直走到叶子节点,把这条路径记录下来。必须先访问根节点,所以只...
  • 【代码随想录】二叉树2-属性1

    101. 对称二叉树 link给一个二叉树的根节点 root , 检查它是否轴对称。 思路层序遍历,判断每一层是否为对称。注意需要记录当前在第几层,还需要判断当前层的长度是否是 2^n。但是,这种方法只考虑了满二叉树的情况。 12345678910...
/7