leetcode-递归
KobeSacre
这个作者很懒,什么都没留下…
展开
-
二叉搜索树的后序遍历序列
leetcode原创 2022-09-26 11:14:27 · 109 阅读 · 0 评论 -
对称的二叉树
leetcode原创 2022-09-22 10:26:24 · 258 阅读 · 0 评论 -
二叉树的镜像
leetcode原创 2022-09-22 10:13:53 · 629 阅读 · 0 评论 -
树的子结构
leetcode原创 2022-09-21 09:53:51 · 176 阅读 · 0 评论 -
加一的链表
加一链表题目:描述给定一个非负整数,这个整数表示为一个非空的单链表,每个节点表示这个整数的一位。返回这个整数加一。除了0本身,所有数字在最高位前都没有0。列表的头节点存的是这个整数的最高位。样例样例1输入: 1 -> 2 -> 3 -> null输出: 1 -> 2 -> 4 -> null解释:123 + 1 = 124样例2输入: 9 -> 9 -> null输出: 1 -> 0 -> 0 -> null原创 2022-04-07 15:54:40 · 600 阅读 · 0 评论 -
完全二叉树的节点个数
完全二叉树的节点个数题目:给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入:输出: 6解题思路:递归求节点个数/** * Definition for a binary tree node. * public class TreeNode { * int val; *原创 2020-11-03 14:02:26 · 388 阅读 · 0 评论 -
二叉树的最近公共祖先
二叉树的最近公共祖先题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/15/原创 2020-11-03 11:36:35 · 124 阅读 · 0 评论 -
二叉树的序列化与反序列化
二叉树的序列化与反序列化题目:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树:序列化为 “[1,2,3,null,null,4,5]”解题思路:用先序遍历将二叉树结构原创 2020-11-03 10:47:58 · 106 阅读 · 0 评论 -
寻找重复的子树
寻找重复的子树题目:给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1:下面是两个重复的子树:和解题思路:需要比较子树结构,那么就要想一个办法让子树结构具象化,所以想到了序列化二叉树,将树的结构变成了字符串,再用HashMap存储字符串出现的次数即子树结构出现的次数/** * Definition for a binary tree node. * public class Tr原创 2020-11-03 10:14:41 · 468 阅读 · 0 评论 -
从中序与后序遍历序列构造二叉树
从中序与后序遍历序列构造二叉树题目:根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:解题思路:和从前序与中序遍历序列构造二叉树相似/** * Definition for a binary tree node. * public class TreeNode { * int val; * T原创 2020-11-02 15:50:21 · 144 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树
从前序与中序遍历序列构造二叉树题目:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:解题思路:前序数组的第一个元素就是根节点,在中序数组中找到这一个元素,然后该元素左边就是左子树,右边是右子树,再分别对这两个部分进行构造/** * Definition for a binary tree node. * publ原创 2020-11-02 15:14:52 · 1097 阅读 · 0 评论 -
最大二叉树
最大二叉树题目:给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。示例 :输入:[3,2,1,6,0,5]输出:返回下面这棵树的根节点:解题思路:运用递归解决,首先需要思考的是根节点该如何构造,我们可以在指定区间内找到最大值,然后再将最大值左右区间分别进行查找最大值,依次递归。p原创 2020-11-02 14:27:34 · 855 阅读 · 0 评论 -
填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针题目:给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。输入:{“KaTeX parse error: Expected '}'原创 2020-11-02 11:44:21 · 80 阅读 · 0 评论 -
二叉树展开为链表
二叉树展开为链表题目:给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树将其展开为:解题思路:运用前序遍历将节点添加进list中,然后遍历list改变每一个节点的左右节点/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * T原创 2020-11-02 10:42:20 · 114 阅读 · 0 评论 -
翻转二叉树
翻转二叉树题目:翻转一棵二叉树。示例:输入:输出:解题思路:运用递归从上至下进行翻转/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public Tr原创 2020-11-02 10:22:34 · 97 阅读 · 0 评论 -
验证二叉搜索树
验证二叉搜索树题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。解题思路:有两种思路,第一种是原创 2020-10-30 15:20:02 · 90 阅读 · 0 评论 -
岛屿的周长
岛屿的周长题目:给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。示例 :输入:[[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0原创 2020-10-30 11:58:31 · 113 阅读 · 0 评论 -
求根到叶子节点数字之和
求根到叶子节点数字之和题目:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3]输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13.因此,数字总和 = 12 + 13 = 25.示例 2:原创 2020-10-29 09:32:59 · 322 阅读 · 0 评论