![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
递归
java
是瓜哥啊
这个作者很懒,什么都没留下…
展开
-
树的子结构
树的子结构输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \1 2给定的树 B: 4 /1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,原创 2021-03-31 14:01:28 · 58 阅读 · 0 评论 -
岛屿数量
给你一个由 ‘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解法:并查集class Solution { pub.原创 2021-03-18 15:26:28 · 43 阅读 · 0 评论 -
最长同值路径
最长同值路径给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。(不是求节点数)示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出: 2示例 2:输入: 1 / \ 4 5 / \ \原创 2021-03-12 17:12:07 · 128 阅读 · 0 评论 -
二叉树的直径
二叉树的直径给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示解法:递归类似:二叉树的最大路径和/** * Definition for a binar原创 2021-03-12 16:32:47 · 100 阅读 · 0 评论 -
二叉树中的最大路径和
二叉树中的最大路径和路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。示例 1:输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6示例 2:输入:root = [-10,9,20,nul原创 2021-03-12 16:18:51 · 2622 阅读 · 0 评论 -
二叉树的最近公共祖先
二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点1 的最近公共祖先是节点 3 。示例 2:输入:root = [3,5,1,原创 2021-03-05 17:39:21 · 287 阅读 · 0 评论 -
翻转二叉树
翻转二叉树翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1解法一:前序遍历class Solution { public TreeNode invertTree(TreeNode root) { //从上往下 if (root == null) return null;原创 2021-03-05 17:06:08 · 60 阅读 · 0 评论 -
二叉树最大的深度
二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。**示例:**给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \15 7返回它的最大深度 3 。解法:/** * Definition for a binary tree node. * public class TreeNode { * int val原创 2021-03-05 16:12:23 · 56 阅读 · 0 评论 -
对称二叉树
对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?解法一:递归/** * Definition for a binary tree原创 2021-03-05 15:53:29 · 35 阅读 · 0 评论 -
合并两个有序链表
合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l2 均按 非递减原创 2021-03-05 14:47:51 · 71 阅读 · 0 评论