![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树系列
文章平均质量分 78
二叉树系列面试题目
硕风和炜
硕风和炜,CSDN官方Java领域优质创作者,阿里云社区专家博主,华为云云享专家,第十二届蓝桥杯JavaB组省1,保研,国家奖学金,JAVA开发技术栈,面试刷题,面经八股文,经验分享,好用的网站工具分享
展开
-
【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】
【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗?给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。原创 2024-08-16 10:20:33 · 1205 阅读 · 0 评论 -
【LeetCode: 101. 对称二叉树 + 二叉树 + dfs】
【LeetCode: 101. 对称二叉树 + 二叉树 + dfs】给你一个二叉树的根节点 root , 检查它是否轴对称。原创 2024-08-15 11:15:46 · 341 阅读 · 0 评论 -
【LeetCode:701. 二叉搜索树中的插入操作 + 二叉树】
【LeetCode:701. 二叉搜索树中的插入操作 + 二叉树】给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。原创 2024-05-16 21:56:43 · 771 阅读 · 0 评论 -
【LeetCode: 572. 另一棵树的子树 + 二叉树 + dfs】
【LeetCode: 572. 另一棵树的子树 + 二叉树 + dfs】给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。原创 2024-04-08 23:01:31 · 795 阅读 · 0 评论 -
【LeetCode: 1026. 节点与其祖先之间的最大差值 + DFS】
【LeetCode: 1026. 节点与其祖先之间的最大差值 + DFS】给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)原创 2024-04-05 13:17:54 · 951 阅读 · 0 评论 -
【LeetCode: 173. 二叉搜索树迭代器 + dfs + 二叉搜索树】
【LeetCode: 173. 二叉搜索树迭代器 + dfs + 二叉搜索树】实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true ;否则返回原创 2024-03-19 22:34:25 · 823 阅读 · 0 评论 -
【LeetCode: 103. 二叉树的锯齿形层序遍历 + bfs】
【LeetCode: 103. 二叉树的锯齿形层序遍历 + bfs】给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。原创 2024-03-15 09:38:25 · 612 阅读 · 0 评论 -
【LeetCode: 102. 二叉树的层序遍历 + bfs】
【LeetCode: 102. 二叉树的层序遍历 + bfs】给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。原创 2024-03-14 18:07:51 · 477 阅读 · 0 评论 -
【LeetCode:98. 验证二叉搜索树 + 递归】
【LeetCode:98. 验证二叉搜索树 + 递归】给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。原创 2024-03-05 11:31:42 · 992 阅读 · 0 评论 -
【LeetCode:2368. 受限条件下可到达节点的数目 + BFS】
【LeetCode:2368. 受限条件下可到达节点的数目 + BFS】现有一棵由 n 个节点组成的无向树,节点编号从 0 到 n - 1 ,共有 n - 1 条边。给你一个二维整数数组 edges ,长度为 n - 1 ,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。另给你一个整数数组 restricted 表示 受限 节点。在不访问受限节点的前提下,返回你可以从节点 0 到达的 最多 节点数目。注意,节点 0 不 会标记为受限节点。原创 2024-03-02 13:27:23 · 649 阅读 · 0 评论 -
【LeetCode:230. 二叉搜索树中第K小的元素 + 二叉树 + 递归】
【LeetCode:230. 二叉搜索树中第K小的元素 + 二叉树 + 递归】给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。原创 2024-03-01 10:22:47 · 430 阅读 · 0 评论 -
【LeetCode:108. 将有序数组转换为二叉搜索树 + 二叉树+递归】
【LeetCode:108. 将有序数组转换为二叉搜索树 + 二叉树+递归】给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。原创 2024-02-29 10:56:50 · 397 阅读 · 0 评论 -
【LeetCode:124. 二叉树中的最大路径和 + 二叉树+递归】
【LeetCode:124. 二叉树中的最大路径和 + 二叉树+递归】二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。原创 2024-02-28 13:05:31 · 693 阅读 · 0 评论 -
【LeetCode:938. 二叉搜索树的范围和 + DFS】
【LeetCode:938. 二叉搜索树的范围和 + DFS】给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。原创 2024-02-26 10:23:27 · 574 阅读 · 0 评论 -
【LeetCode:2476. 二叉搜索树最近节点查询 + 中序遍历 + 有序表】
【LeetCode:2476. 二叉搜索树最近节点查询 + 中序遍历 + 有序表】给你一个 二叉搜索树 的根节点 root ,和一个由正整数组成、长度为 n 的数组 queries 。请你找出一个长度为 n 的 二维 答案数组 answer ,其中 answer[i] = [mini, maxi] :mini 是树中小于等于 queries[i] 的 最大值 。如果不存在这样的值,则使用 -1 代替。maxi 是树中大于等于 queries[i] 的 最小值 。如果不存在这样的值,则使用 -1 代原创 2024-02-24 09:59:53 · 758 阅读 · 0 评论 -
【LeetCode:2583. 二叉树中的第 K 大层和 + BFS】
【LeetCode:2583. 二叉树中的第 K 大层和 + BFS】给你一棵二叉树的根节点 root 和一个正整数 k 。树中的 层和 是指 同一层 上节点值的总和。返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1 。注意,如果两个节点与根节点的距离相同,则认为它们在同一层。原创 2024-02-23 10:13:26 · 822 阅读 · 0 评论 -
【LeetCode: 889. 根据前序和后序遍历构造二叉树 + DFS】
【LeetCode: 889. 根据前序和后序遍历构造二叉树 + DFS】给定两个整数数组,preorder 和 postorder ,其中 preorder 是一个具有 无重复 值的二叉树的前序遍历,postorder 是同一棵树的后序遍历,重构并返回二叉树。如果存在多个答案,您可以返回其中 任何 一个。原创 2024-02-22 09:57:57 · 608 阅读 · 0 评论 -
【LeetCode: 106. 从中序与后序遍历序列构造二叉树 + DFS】
【LeetCode: 106. 从中序与后序遍历序列构造二叉树 + DFS】给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。原创 2024-02-21 10:16:11 · 567 阅读 · 0 评论 -
【LeetCode: 105. 从前序与中序遍历序列构造二叉树 + DFS】
【LeetCode: 105. 从前序与中序遍历序列构造二叉树 + DFS】给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。原创 2024-02-20 11:01:34 · 850 阅读 · 0 评论 -
【LeetCode: 590. N 叉树的后序遍历 + DFS】
【LeetCode: 590. N 叉树的后序遍历 + DFS】给定一个 n 叉树的根节点 root ,返回 其节点值的 后序遍历 。n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。原创 2024-02-19 20:49:54 · 905 阅读 · 0 评论 -
【LeetCode: 589. N 叉树的前序遍历 + DFS】
【LeetCode: 589. N 叉树的前序遍历 + DFS】给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。原创 2024-02-18 10:44:23 · 1120 阅读 · 0 评论 -
【LeetCode: 429. N 叉树的层序遍历 + BFS】
【LeetCode: 429. N 叉树的层序遍历 + BFS】给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。原创 2024-02-17 22:19:59 · 811 阅读 · 0 评论 -
【LeetCode: 103. 二叉树的锯齿形层序遍历 + BFS】
【LeetCode: 103. 二叉树的锯齿形层序遍历】给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。原创 2024-02-16 20:32:08 · 574 阅读 · 0 评论 -
【LeetCode: 107. 二叉树的层序遍历 II + BFS】
【LeetCode: 107. 二叉树的层序遍历 II + BFS】给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)原创 2024-02-16 20:17:32 · 688 阅读 · 0 评论 -
【LeetCode:530. 二叉搜索树的最小绝对差 | 二叉搜索树】
【LeetCode:530. 二叉搜索树的最小绝对差 | 二叉搜索树】给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。原创 2024-01-13 12:06:02 · 433 阅读 · 0 评论 -
【LeetCode:129. 求根节点到叶节点数字之和 | 二叉树 + 递归】
【LeetCode:129. 求根节点到叶节点数字之和 | 二叉树 + 递归】给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。原创 2024-01-05 15:49:16 · 1106 阅读 · 0 评论 -
【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】
【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。原创 2024-01-04 13:58:36 · 950 阅读 · 0 评论 -
【LeetCode:LCR 143. 子结构判断 | 二叉树 + 递归】
【LeetCode:LCR 143. 子结构判断 | 二叉树 + 递归】给定两棵二叉树 tree1 和 tree2,判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。注意,空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。原创 2023-12-29 10:29:37 · 1100 阅读 · 0 评论 -
【LeetCode: 2415. 反转二叉树的奇数层 | BFS + DFS】
【LeetCode: 2415. 反转二叉树的奇数层 | BFS + DFS】给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] ,那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。反转后,返回树的根节点。完美 二叉树需满足:二叉树的所有父节点都有两个子节点,且所有叶子节点都在同一层。节点的 层数 等于该节点到根节点之间的边数。原创 2023-12-15 11:39:42 · 156 阅读 · 0 评论 -
【LeetCode:117. 填充每个节点的下一个右侧节点指针 II | DFS | BFS】
【LeetCode:117. 填充每个节点的下一个右侧节点指针 II | DFS | BFS】,给定一个二叉树:填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。原创 2023-11-03 09:33:19 · 160 阅读 · 0 评论 -
【LeetCode:637. 二叉树的层平均值 | bfs】
637. 二叉树的层平均值 | bfs,给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。原创 2023-10-23 09:58:16 · 123 阅读 · 0 评论 -
【LeetCode: 337. 打家劫舍 III | 暴力递归=>记忆化搜索=>动态规划 | 树形dp】
【LeetCode: 337. 打家劫舍 III | 暴力递归=>记忆化搜索=>动态规划 | 树形dp】小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀原创 2023-04-16 17:47:09 · 482 阅读 · 0 评论 -
【二叉搜索树与双向链表~~~二叉树+双向链表+结构转换+变量定义】
【二叉搜索树与双向链表~~~二叉树+双向链表+结构转换+变量定义】1.要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。数据范围:输入二叉树的节点数0≤n≤1000,二叉树中每个节点的值0≤val≤1000。3.函数返回的TreeNode,有左右指针,其实可以看成一个双向链表的数据结构。输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。输入题面图中二叉树,输出的时候将双向链表的头节点返回即可。原创 2023-01-10 10:16:19 · 78 阅读 · 0 评论 -
【从前序与中序遍历序列构造二叉树-从中序与后序遍历序列构造二叉树~~~二叉树数据结构+递归】
【从前序与中序遍历序列构造二叉树-从中序与后序遍历序列构造二叉树~~~二叉树数据结构+递归】给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。原创 2023-01-09 17:28:48 · 106 阅读 · 0 评论 -
【二叉树中和为某一值的路径(一)~~~二叉树数据结构+DFS+递归】
【二叉树中和为某一值的路径(一)~~~二叉树数据结构+DFS+递归】给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。返回true,因为存在一条路径5→4→11→2的节点值之和为 22。1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点。进阶:空间复杂度 O(树的高度),时间复杂度 O(n)3.路径只能从父节点到子节点,不能从子节点到父节点。原创 2023-01-08 20:13:04 · 103 阅读 · 0 评论 -
【求二叉树的层序遍历~~~二叉树数据结构+BFS+广度优先遍历】
【求二叉树的层序遍历~~~二叉树数据结构+BFS+广度优先遍历】给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)给定的二叉树是{3,9,20,#,#,15,7},0原创 2023-01-08 18:53:41 · 70 阅读 · 0 评论 -
【二叉树的前序遍历】
【二叉树的前序遍历】数据范围:二叉树的节点数量满足1≤n≤100 ,二叉树节点的值满足1≤val≤100 ,树的各节点的值各不相同。给你二叉树的根节点 root ,返回它节点值的 前序 遍历。原创 2023-01-08 18:41:26 · 69 阅读 · 0 评论 -
【按之字形顺序打印二叉树~~~二叉树+队列+Boolean标记状态变量】
【按之字形顺序打印二叉树~~~二叉树+队列+Boolean标记状态变量】给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)如题面解释,第一层是根节点,从左到右打印结果,第二层从右到左,第三层从左到右。数据范围:0≤n≤1500,树上每个节点的val满足 ∣val∣原创 2023-01-07 12:27:34 · 82 阅读 · 1 评论 -
【判断是不是二叉搜索树】
【判断是不是二叉搜索树、二叉搜索树的特性、递归遍历的思路、容易出错的思路以及解决方案的正确代码】给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树。二叉搜索树满足每个节点的左子树上的所有节点均小于当前节点且右子树上的所有节点均大于当前节点。数据范围:节点数量满足 1≤n≤10 ^4 ,节点上的值满足 −2 ^31 ≤val≤2 ^31−1。原创 2022-10-13 22:31:23 · 88 阅读 · 0 评论 -
【二叉树的镜像】
【代码】【二叉树的镜像、面试常考的题目,二叉树镜像、递归的思路】操作给定的二叉树,将其变换为源二叉树的镜像。数据范围:二叉树的节点数 0≤n≤1000 , 二叉树每个节点的值 0≤val≤1000 要求: 空间复杂度 O(n) 。本题也有原地操作,即空间复杂度 O(1) 的解法,时间复杂度 O(n)原创 2022-10-13 21:49:16 · 172 阅读 · 0 评论