随笔分类 -  LeetCode

摘要:题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例: 输入:root = [3,5,1,6 阅读全文
posted @ 2023-02-05 18:33 壹索007 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。 如果树中有不止一个众数,可以按 任意顺序 返回。 假定 BST 满足如下定义: 结点左子树中所含节点的值 小于等于 当前节点的值 结点右子树中所含节点的值 大于等于 当 阅读全文
posted @ 2023-02-05 18:13 壹索007 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例: 输入:root = [4,2,6,1,3] 输出:1 思路: 因为是二叉搜索树(有序),所以最小差值基本只会出现在相邻两个节点。 最直观的方式就是转成有 阅读全文
posted @ 2023-02-03 21:53 壹索007 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题目: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例: 输入:root = [2,1,3] 输出:true 思路 阅读全文
posted @ 2023-02-03 21:06 壹索007 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题目: 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例: 输入:root = [4,2,7,1,3], val = 2 输出:[2,1,3] 思路: 二叉搜 阅读全文
posted @ 2023-02-03 18:27 壹索007 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目: 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。 返回合并后的二叉树。 注意: 合并 阅读全文
posted @ 2023-02-03 15:25 壹索007 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构建的 最大二叉树 。 阅读全文
posted @ 2023-02-02 23:46 壹索007 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目: 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例: 输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3] 阅读全文
posted @ 2023-02-02 23:09 壹索007 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目: 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点的节点。 示例: 输入:root 阅读全文
posted @ 2023-02-02 00:13 壹索007 阅读(23) 评论(0) 推荐(0) 编辑
摘要:题目: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 思路: 分析一下题目:在树的最后一行找到最左边的值。 (1)如何判断是最后一行:深度最大的 阅读全文
posted @ 2023-02-01 00:19 壹索007 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目: 给定二叉树的根节点 root ,返回所有左叶子之和。 示例: 输入: root = [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 思路: 一定要注意本题要求的是左叶子之和,是叶子节点的值和。 放上本人 阅读全文
posted @ 2023-01-31 23:40 壹索007 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目: 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例: 输入:root = [1,2,3,null,5] 输出:["1->2->5","1->3"] 思路: (1)选择前序遍历,由父节点指向左右孩子。 (2)1->2- 阅读全文
posted @ 2023-01-29 23:41 壹索007 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目: 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例: 输入:root = [3,9,20,null,null,15,7] 输出:true 输入:root = [1,2,2,3,3,null 阅读全文
posted @ 2023-01-29 18:43 壹索007 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目: 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例: 输入:root 阅读全文
posted @ 2023-01-29 18:20 壹索007 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例: 输入:root = [3,9,20,null,null,15,7] 输出:2 思路: 一定注意,叶子节点是没有子节点的节点。所以只是简单地把《二叉树的最大 阅读全文
posted @ 2023-01-28 00:12 壹索007 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 思路: /** * De 阅读全文
posted @ 2023-01-27 22:13 壹索007 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例: 输入:root = [1,2,2,3,4,4,3] 输出:true 思路: 对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的,理解这一点就知道了其实我们要比较的是两个树(这两个树是根节点的左右子树),所以在 阅读全文
posted @ 2023-01-25 23:02 壹索007 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 思路: 注意不是交换数值,而是指针交换。 (1)确定递归函数的参数和返回值 参数就是要传入节点的指针,不需要其他参数了,通常 阅读全文
posted @ 2023-01-10 00:24 壹索007 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 思路: 利用队列,记录每层的结点数,并弹出每层。(迭代法) (1)队列 阅读全文
posted @ 2023-01-10 00:19 壹索007 阅读(16) 评论(0) 推荐(0) 编辑
摘要:递归三要素:(1)确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。(2)确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作 阅读全文
posted @ 2023-01-04 23:12 壹索007 阅读(15) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示