11 2022 档案
摘要:LeetCode 98.验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 思路: 二叉搜索树在中序遍历的顺序下,输出的值是有序的
阅读全文
摘要:LeetCode700.二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如: 递归法三部曲: 1.传参和返回 传入根节点和目标值,返回对应的根节点。 2.确定终止条件 终止条
阅读全文
摘要:SpringCloud概述。 Eureka: (服务注册发现) 配置文件参数: register-with-eureka: false #false表示不向注册中心注册自己。 fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
阅读全文
摘要:LeetCode617 合并二叉树 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 思路:
阅读全文
摘要:LeetCode654.最大二叉树 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。 左子树是通过数组中最大值左边部分构造出的最大二叉树。 右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构建最大二叉树,并且输出这个树的根节点
阅读全文
摘要:106.从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 思路: 首先,要确保树中
阅读全文
摘要:LeetCode112. 路径总和 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22 返回 true, 因为存在目标和为 22 的根节点到叶子节点的
阅读全文
摘要:LeetCode513.找树左下角的值 思路: 思路1:需要遍历所有路径,找出深度最大的一条路径,并且是左叶子结点的值。 思路2:层序遍历最左值。 递归遍历写法: 前序遍历:中左右 传参:根节点 终止条件:当前节点为叶子节点 单层逻辑:如果到叶子节点,更新最大深度、 // 递归法 class Sol
阅读全文
摘要:LeetCode404. 左叶子之和 计算给定二叉树的所有左叶子之和。 思路: 首先由于计算左叶子之和,所以遍历的顺序一定是左在前,选用左右中的后续遍历进行递归比较合适。 由于判断是左叶子,不是左子树,所以层序遍历不可以用。 左叶子节点如何用代码定义?也就是当前节点的终止条件,节点A的左孩子不为空,
阅读全文
摘要:LeetCode 257二叉树的所有路径 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 思路: 终止逻辑:走到叶子节点,所以原本终止条件cur=null改为 root.left == null && root.right == null由于到叶子
阅读全文
摘要:LeetCode 110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。 示例 2: 给定二叉树 [
阅读全文
摘要:LeetCode222. 完全二叉树的节点个数 给出一个完全二叉树,求出该树的节点个数。 示例 1: 输入:root = [1,2,3,4,5,6] 输出:6 示例 2: 输入:root = [] 输出:0 示例 3: 输入:root = [1] 输出:1 提示: 树中节点的数目范围是[0, 5 *
阅读全文
摘要:LeetCode111.给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 最小深度为2 前序遍历和后序遍历都可以做。 后序遍历,从下往上遍历求高度,
阅读全文
摘要:LeetCode104.找出二叉树最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7] 返回它的最大深度 3 。 深度和高度: 深度是根节点到叶
阅读全文
摘要:LeetCode101对称二叉树 思路: 判断二叉树是否是对称二叉树,我首先想到的是层序遍历,然后取每层的值进行判断是否是回文。但是这种做法是错误的,不能只在意值上面的回文, 空间上是否对称也是关键因素之一,能保证值上的对称和空间上的对称才是真正的对称二叉树。 对二叉树的判断,也就分两种类型的写法:
阅读全文
摘要:进程间通信IPC: 无名管道读写四种情况: 1.写没有关闭,如果管道内有数据,读管道可以读,管道内没有数据,读管道阻塞。 2.写关闭,读管道读,可以读全部内容,并返回0 3.读没有关闭,管道已经被写满,继续写会被阻塞 4.所有读被关闭,写管道写会收到信号并返回 命名管道: 提供了一个路径关联,只要可
阅读全文
摘要:LeetCode 226 翻转二叉树 思路:遍历节点,交换左右孩子的顺序即可。前序遍历(中左右)、后序遍历(左右中)都可以,中序遍历这样写就行不通,会做多余的翻转操作。 遍历的写法:1.确定参数和返回值 参数:根节点,返回值TreeNode。 这是题目规定好的,无需多言 2.终止条件 当前节点为空节
阅读全文
摘要:LeetCode 199.二叉树右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 层序遍历一个思路,只需要判断当前元素是否是最后一个元素,仅保存最后一个元素就可以了。 // 199.二叉树的右视图 public class N0199 { /** *
阅读全文
摘要:僵尸进程: 僵尸进程是什么,为什么会产⽣? 如果⼀个进程已经终⽌,但是它的⽗进程尚未调⽤ wait() 或 waitpid() 对它进⾏清理,这时的 进程状态称为僵死状态,处于僵死状态的进程称为僵尸进程。 等待子进程结束: wait():会引起程序阻塞 waitpid():非阻塞,只会等待pid参数
阅读全文
摘要:二叉树的层序遍历: LeetCode102 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 思路: 如果我们用树形结构去实现层序遍历,3连接9,20;20连接15,7 我们没有办法去按顺序的记录每一层的元素,因为连接的规律造成,我们需要记录是第几层, 和
阅读全文
摘要:二叉树迭代遍历: 递归遍历是从后往前推,迭代遍历是从前往后推。 例如前序遍历: 前序遍历,优先操作中间节点,那么就先把根节点放入栈,然后放入右孩子和左孩子,由于栈是先进后出,压入栈的时候的顺序是中右左。 前序遍历的代码很容易写出来。 首先是终止条件:当前节点不为空 操作逻辑:由于是从根节点触发,所以
阅读全文
摘要:二叉树: 满二叉树:除叶子结点,每个节点都满。 完全二叉树:叶子节点可以不满,但是一定保证从左到右的顺序存在,中间不能空。 二叉搜索树: 有数值,左小右大 平衡二叉搜索树: 左右子树高度差绝对值不大于1,切左右子树都为平衡二叉树 存储方式: 链式存储:链表,通过左右指针进行链接, 顺序存储:数组,前
阅读全文
摘要:什么是操作系统? 资源分配和回收。 将硬件资源封装起来,提供相对统一的接口。 控制进程的生命周期。 进程: 概念: 编译代码的可执行文件,运行时被加载到内存,CPU执行内存的指令运行的程序,就是进程的概念。 进程是运行时程序的封装,操作系统进行资源调度和分配的基本单位。 进程表: 包含了进程状态的重
阅读全文