树
文章平均质量分 66
算法#树
李牧九丶
奉己为神
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从零学算法1379
答案是树 cloned 中的黄颜色的节点(其他示例类似)。请找出在树 cloned 中,与 target 相同 的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。输入: tree = [8,null,6,null,5,null,4,null,3,null,2,null,1], target = 4。只能 返回对克隆树 cloned 中已有的节点的引用。输入: tree = [7,4,3,null,null,6,19], target = 3。原创 2024-04-03 09:48:14 · 335 阅读 · 0 评论 -
从零学算法894
输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,null,null,null,null,0,0],[0,0,0,0,0,null,null,0,0]].给你一个整数 n ,请你找出所有可能含 n 个节点的 真二叉树 ,并以列表形式返回。答案的每个元素都是一棵真二叉树的根节点。真二叉树 是一类二叉树,树中每个节点恰好有 0 或 2 个子节点。输出:[[0,0,0]]原创 2024-04-02 16:51:29 · 525 阅读 · 0 评论 -
从零学算法103
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。输入:root = [3,9,20,null,null,15,7]输出:[[3],[20,9],[15,7]]输入:root = [1]输入:root = []原创 2023-12-28 16:49:13 · 1032 阅读 · 0 评论 -
从零学算法94
它的作用是不断往左边找节点,找到最左的,找到后往上回溯的时候,是先处理最近递归到的,这就是栈的先进先出的特点,所以它就等价于不断把左节点入栈。,就是要用同样的方式处理右节点去了,我们就把用来遍历的 root,更新到 node.right 然后继续按照同样的方式处理。这样的顺序,同时,对于每个左节点和右节点,也是遵从同样的访问顺序,你会发现这就是天然的递归,递归的最小基本单元就是。输入:root = [1,null,2,3]输入:root = [1]输入:root = []输出:[1,3,2]原创 2023-12-26 16:50:37 · 417 阅读 · 0 评论 -
从零学算法108
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案。输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]原创 2023-06-26 17:30:04 · 311 阅读 · 0 评论 -
从零学算法98
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。输入:root = [5,1,4,null,null,3,6]解释:根节点的值是 5 ,但是右子节点的值是 4。所有左子树和右子树自身必须也是二叉搜索树。节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。输入:root = [2,1,3]原创 2023-06-26 16:06:37 · 367 阅读 · 0 评论 -
从零学算法297
请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。.序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。原创 2023-06-26 14:42:34 · 341 阅读 · 0 评论 -
从零学算法116
解释:给定二叉树,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,‘#’ 标志着每一层的结束。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。输入:root = [1,2,3,4,5,6,7]输出:[1,#,2,3,#,4,5,6,7,#].填充每个节点的下一个右侧节点指针。原创 2023-06-21 10:09:51 · 699 阅读 · 0 评论 -
从零学算法112
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。输入:root = [1,2,3], targetSum = 5。输入:root = [], targetSum = 0。解释:由于树是空的,所以不存在根节点到叶子节点的路径。不存在 sum = 5 的根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。(1 --> 2): 和为 3。(1 --> 3): 和为 4。原创 2023-06-19 17:10:27 · 367 阅读 · 0 评论 -
从零学算法101
他人解法:其实难点就在于怎样定义对称能够得到递归的最小单元。根据对称这个词,应该能够想到应该传左右节点两个参数,当左右节点的值相等,且左节点的左节点等于右节点的右节点并且左节点的右节点等于右节点的左节点则此时对称。我的原始人解法,层序遍历我就不多说了,等于判断数组是否对称,唯一难点就是需要镜像入队,我就直接用别人的了,递归我想不到。.给你一个二叉树的根节点 root , 检查它是否轴对称。(就是以根节点为对称轴,左右是否成镜像)输入:root = [1,2,2,3,4,4,3]原创 2023-06-19 13:52:55 · 96 阅读 · 0 评论 -
从零学算法104
给定二叉树 [3,9,20,null,null,15,7],二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。给定一个二叉树,找出其最大深度。返回它的最大深度 3。原创 2023-06-19 13:22:30 · 363 阅读 · 0 评论 -
从零学算法102
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]原创 2023-06-16 10:15:50 · 331 阅读 · 0 评论 -
从零学算法(剑指 Offer 33)
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。输入: [1,6,3,2,5]输入: [1,3,2,6,5]原创 2023-09-18 16:28:36 · 202 阅读 · 0 评论 -
从零学算法106
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输入:inorder = [-1], postorder = [-1]输出:[3,9,20,null,null,15,7]原创 2023-06-20 16:02:21 · 715 阅读 · 1 评论 -
从零学算法236
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1。输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4。解释:节点 5 和节点 4 的最近公共祖先是节点 5。因为根据定义最近公共祖先节点可以为节点本身。原创 2023-06-26 11:03:28 · 333 阅读 · 0 评论 -
从零学算法235
输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。解释: 节点 2 和节点 8 的最近公共祖先是 6。原创 2023-09-05 15:15:02 · 440 阅读 · 0 评论 -
从零学算法110
输入:root = [1,2,2,3,3,null,null,4,4]输入:root = [3,9,20,null,null,15,7]一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。.给定一个二叉树,判断它是否是高度平衡的二叉树。输入:root = []原创 2023-09-04 15:06:18 · 485 阅读 · 0 评论 -
从零学算法230
输入: root = [5,3,6,2,4,null,null,1], k = 3。输入: root = [3,1,4,null,2], k = 1。给定一棵二叉搜索树,请找出其中第 k 大的节点的值。原创 2023-08-31 15:02:37 · 317 阅读 · 0 评论 -
从零学算法(剑指 Offer 36)
我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中的第一个节点的指针。.输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。原创 2023-08-31 11:32:03 · 430 阅读 · 0 评论 -
从零学算法113
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22。输入:root = [1,2,3], targetSum = 5。输入:root = [1,2], targetSum = 0。输出:[[5,4,11,2],[5,8,4,5]]叶子节点 是指没有子节点的节点。原创 2023-08-28 00:05:30 · 184 阅读 · 0 评论 -
从零学算法(LCR 143)
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。输入:A = [3,4,5,1,2], B = [4,1]B是A的子结构, 即 A中有出现和B相同的结构和节点值。输入:A = [1,2,3], B = [3,1]原创 2023-08-14 11:21:21 · 230 阅读 · 0 评论
分享