随笔分类 -  数据结构与算法

摘要:617. 合并二叉树 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节 阅读全文
posted @ 2023-12-22 20:56 鲍宪立 阅读(68) 评论(0) 推荐(0)
摘要:654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构建的 * 阅读全文
posted @ 2023-12-21 15:55 鲍宪立 阅读(42) 评论(0) 推荐(0)
摘要:106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder = [9,3,15,20,7], postor 阅读全文
posted @ 2023-12-20 18:24 鲍宪立 阅读(63) 评论(0) 推荐(0)
摘要:路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点的节点。 示例 1: 输入:r 阅读全文
posted @ 2023-12-09 17:04 鲍宪立 阅读(31) 评论(0) 推荐(0)
摘要:找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root = [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 【思路】 迭代法 阅读全文
posted @ 2023-12-08 21:58 鲍宪立 阅读(19) 评论(0) 推荐(0)
摘要:左叶子之和 给定二叉树的根节点 root ,返回所有左叶子之和。 示例 1: 输入: root = [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 示例 2: 输入: root = [1] 输出: 0 【思路】 阅读全文
posted @ 2023-12-07 16:10 鲍宪立 阅读(44) 评论(0) 推荐(0)
摘要:二叉树的所有路径 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [1,2,3,null,5] 输出:["1->2->5","1->3"] 示例 2: 输入:root = [1] 输出:["1" 阅读全文
posted @ 2023-12-06 20:03 鲍宪立 阅读(53) 评论(0) 推荐(0)
摘要:平衡二叉树 【题外话】 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。(从上往下看) 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。(从下往上看) 小疑惑:为什么104.二叉树的最大深度中求的是二叉树的最大深度,也用的是后序遍历。(本质上求解的就是根节点的高度,而根节点 阅读全文
posted @ 2023-12-06 11:24 鲍宪立 阅读(48) 评论(0) 推荐(0)
摘要:完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例 1: 阅读全文
posted @ 2023-12-06 09:59 鲍宪立 阅读(35) 评论(0) 推荐(0)
摘要:对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,null,3] 输出:false 【思路】 对于二叉树是否对称,要比较的是根节点的左子树与 阅读全文
posted @ 2023-11-30 17:36 鲍宪立 阅读(31) 评论(0) 推荐(0)
摘要:翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root = [2,1,3] 输出:[2,3,1] 示例 3: 输入:root = [] 输出:[ 阅读全文
posted @ 2023-11-28 20:03 鲍宪立 阅读(39) 评论(0) 推荐(0)
摘要:二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null, 阅读全文
posted @ 2023-11-27 11:04 鲍宪立 阅读(16) 评论(0) 推荐(0)
摘要:二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root = [1,null,2] 输出:2 【思路】 方法 阅读全文
posted @ 2023-11-25 09:28 鲍宪立 阅读(49) 评论(0) 推荐(0)
摘要:填充每个节点的下一个右侧节点指针 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下 阅读全文
posted @ 2023-11-24 11:28 鲍宪立 阅读(31) 评论(0) 推荐(0)
摘要:在每个树行中找最大值 给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。 示例1: 输入: root = [1,3,2,5,3,null,9] 输出: [1,3,9] 示例2: 输入: root = [1,2,3] 输出: [1,3] class Solution { public 阅读全文
posted @ 2023-11-23 10:39 鲍宪立 阅读(25) 评论(0) 推荐(0)
摘要:N叉树的层序遍历 给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。 示例 1: 输入:root = [1,null,3,2,4,null,5,6] 输出:[[1],[3,2,4],[5,6]] 示例 2 阅读全文
posted @ 2023-11-23 10:37 鲍宪立 阅读(28) 评论(0) 推荐(0)
摘要:二叉树的层平均值 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[3.0 阅读全文
posted @ 2023-11-20 21:43 鲍宪立 阅读(29) 评论(0) 推荐(0)
摘要:二叉树的右视图 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [ 阅读全文
posted @ 2023-11-17 15:11 鲍宪立 阅读(39) 评论(0) 推荐(0)
摘要:二叉树的层序遍历 II 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[15,7],[9,20],[3]] 示例 2: 输入:r 阅读全文
posted @ 2023-11-16 15:16 鲍宪立 阅读(20) 评论(0) 推荐(0)