
二叉树系列
文章平均质量分 80
二叉树系列面试题目
硕风和炜
硕风和炜,优快云官方Java领域优质创作者,阿里云社区专家博主,华为云云享专家,第十二届蓝桥杯JavaB组省1,保研,国家奖学金,JAVA开发技术栈,面试刷题,面经八股文,经验分享,好用的网站工具分享
展开
-
【LeetCode: 面试变体: 236. 二叉树的最近公共祖先 + 数组 + 递归】
【LeetCode: 面试变体: 236. 二叉树的最近公共祖先 + 数组 + 递归】给定一个数组来表示二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”原创 2025-02-26 10:55:17 · 880 阅读 · 0 评论 -
【LeetCode: 236. 二叉树的最近公共祖先 + 二叉树 + 递归】
【LeetCode: 236. 二叉树的最近公共祖先 + 二叉树 + 递归】给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”原创 2025-02-25 09:58:09 · 624 阅读 · 0 评论 -
【LeetCode: 958. 二叉树的完全性检验 + bfs + 二叉树】
【LeetCode: 958. 二叉树的完全性检验 + bfs + 二叉树】给你一棵二叉树的根节点 root ,请你判断这棵树是否是一棵 完全二叉树 。在一棵 完全二叉树 中,除了最后一层外,所有层都被完全填满,并且最后一层中的所有节点都尽可能靠左。最后一层(第 h 层)中可以包含 1 到 2h 个节点。原创 2025-01-30 11:29:02 · 1015 阅读 · 0 评论 -
【LeetCode: 226. 翻转二叉树 + 二叉树】
【LeetCode: 226. 翻转二叉树 + 二叉树】给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。原创 2025-01-16 10:32:11 · 646 阅读 · 0 评论 -
【LeetCode: 437. 路径总和 III + 二叉树 + 递归】
【LeetCode: 437. 路径总和 III + 二叉树 + 递归】给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。原创 2025-01-05 18:05:19 · 1529 阅读 · 0 评论 -
【LeetCode: 104. 二叉树的最大深度 + 二叉树 + 递归】
【LeetCode: 104. 二叉树的最大深度 + 二叉树 + 递归】给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。原创 2025-01-04 11:22:10 · 456 阅读 · 0 评论 -
【LeetCode: 113. 路径总和 II + 二叉树 + 递归】
【LeetCode: 113. 路径总和 II + 二叉树 + 递归】给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。原创 2025-01-03 11:37:12 · 923 阅读 · 0 评论 -
【LeetCode: 112. 路径总和 + 二叉树 + 递归】
【LeetCode: 112. 路径总和 + 二叉树 + 递归】给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。原创 2025-01-02 11:11:00 · 790 阅读 · 0 评论 -
【LeetCode: 100. 相同的树 + 二叉树 + 递归】
【LeetCode: 100. 相同的树 + 二叉树 + 递归】给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。原创 2024-12-31 12:22:27 · 1003 阅读 · 0 评论 -
【LeetCode: 1367. 二叉树中的链表 + 链表 + 二叉树 + 递归】
【LeetCode: 1367. 二叉树中的链表 + 链表 + 二叉树 + 递归】给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表。如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你返回 True ,否则返回 False 。一直向下的路径的意思是:从树中某个节点开始,一直连续向下的路径。原创 2024-12-30 10:32:05 · 875 阅读 · 0 评论 -
【LeetCode: 404. 左叶子之和 + 二叉树 + BFS】
【LeetCode: 404. 左叶子之和 + 二叉树 + BFS】给定二叉树的根节点 root ,返回所有左叶子之和。原创 2024-12-17 17:56:35 · 338 阅读 · 0 评论 -
【LeetCode: 515. 在每个树行中找最大值 + 二叉树 + BFS】
【LeetCode: 515. 在每个树行中找最大值 + 二叉树 + BFS】给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。原创 2024-12-16 11:02:13 · 415 阅读 · 0 评论 -
【LeetCode: 94. 二叉树的中序遍历 + 栈】
【LeetCode: 94. 二叉树的中序遍历 + 栈】给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。原创 2024-12-04 11:00:06 · 603 阅读 · 0 评论 -
【LeetCode: 144. 二叉树的前序遍历 + 栈】
【LeetCode: 144. 二叉树的前序遍历 + 栈】给你二叉树的根节点 root ,返回它节点值的 前序 遍历。原创 2024-12-02 20:29:57 · 894 阅读 · 0 评论 -
【LeetCode: 145. 二叉树的后序遍历 + 栈】
【LeetCode: 145. 二叉树的后序遍历 + 栈】给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。原创 2024-11-29 19:30:16 · 1143 阅读 · 0 评论 -
【LeetCode: 111. 二叉树的最小深度 + 二叉树】
【LeetCode: 111. 二叉树的最小深度 + 二叉树】给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。原创 2024-11-16 09:00:00 · 601 阅读 · 0 评论 -
【LeetCode: 3249. 统计好节点的数目 + 二叉树】
【LeetCode: 3249. 统计好节点的数目 + 二叉树】现有一棵 无向 树,树中包含 n 个节点,按从 0 到 n - 1 标记。树的根节点是节点 0 。给你一个长度为 n - 1 的二维整数数组 edges,其中 edges[i] = [ai, bi] 表示树中节点 ai 与节点 bi 之间存在一条边。如果一个节点的所有子节点为根的 子树包含的节点数相同,则认为该节点是一个 好节点。返回给定树中 好节点 的数量。子树 指的是一个节点以及它所有后代节点构成的一棵树。原创 2024-11-14 11:01:11 · 782 阅读 · 0 评论 -
【LeetCode: 110. 平衡二叉树 + 二叉树】
【LeetCode: 110. 平衡二叉树 + 二叉树】给定一个二叉树,判断它是否是 平衡二叉树,平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1。原创 2024-11-13 19:55:12 · 867 阅读 · 0 评论 -
【LeetCode:116. 填充每个节点的下一个右侧节点指针 + BFS(层次遍历)】
【LeetCode:116. 填充每个节点的下一个右侧节点指针 + BFS(层次遍历)】给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。原创 2024-09-22 11:20:48 · 1388 阅读 · 0 评论 -
【Leetcode:257. 二叉树的所有路径 + 二叉树 + 递归 】
【Leetcode:257. 二叉树的所有路径 + 二叉树 + 递归 】给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。原创 2024-09-13 21:56:00 · 837 阅读 · 0 评论 -
【Leetcode:543. 二叉树的直径 + 二叉树 + 递归 】
【Leetcode:543. 二叉树的直径 + 二叉树 + 递归 】给你一棵二叉树的根节点,返回该树的 直径 。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。原创 2024-08-26 20:53:14 · 985 阅读 · 0 评论 -
【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】
【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗?给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。原创 2024-08-16 10:20:33 · 1325 阅读 · 0 评论 -
【LeetCode: 101. 对称二叉树 + 二叉树 + dfs】
【LeetCode: 101. 对称二叉树 + 二叉树 + dfs】给你一个二叉树的根节点 root , 检查它是否轴对称。原创 2024-08-15 11:15:46 · 434 阅读 · 0 评论 -
【LeetCode:701. 二叉搜索树中的插入操作 + 二叉树】
【LeetCode:701. 二叉搜索树中的插入操作 + 二叉树】给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。原创 2024-05-16 21:56:43 · 812 阅读 · 0 评论 -
【LeetCode: 572. 另一棵树的子树 + 二叉树 + dfs】
【LeetCode: 572. 另一棵树的子树 + 二叉树 + dfs】给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。原创 2024-04-08 23:01:31 · 842 阅读 · 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 · 989 阅读 · 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 · 911 阅读 · 0 评论 -
【LeetCode: 103. 二叉树的锯齿形层序遍历 + bfs】
【LeetCode: 103. 二叉树的锯齿形层序遍历 + bfs】给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。原创 2024-03-15 09:38:25 · 672 阅读 · 0 评论 -
【LeetCode: 102. 二叉树的层序遍历 + bfs】
【LeetCode: 102. 二叉树的层序遍历 + bfs】给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。原创 2024-03-14 18:07:51 · 534 阅读 · 0 评论 -
【LeetCode:98. 验证二叉搜索树 + 递归】
【LeetCode:98. 验证二叉搜索树 + 递归】给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。原创 2024-03-05 11:31:42 · 1068 阅读 · 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 · 700 阅读 · 0 评论 -
【LeetCode:230. 二叉搜索树中第K小的元素 + 二叉树 + 递归】
【LeetCode:230. 二叉搜索树中第K小的元素 + 二叉树 + 递归】给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。原创 2024-03-01 10:22:47 · 471 阅读 · 0 评论 -
【LeetCode:108. 将有序数组转换为二叉搜索树 + 二叉树+递归】
【LeetCode:108. 将有序数组转换为二叉搜索树 + 二叉树+递归】给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。原创 2024-02-29 10:56:50 · 432 阅读 · 0 评论 -
【LeetCode:124. 二叉树中的最大路径和 + 二叉树+递归】
【LeetCode:124. 二叉树中的最大路径和 + 二叉树+递归】二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。原创 2024-02-28 13:05:31 · 730 阅读 · 0 评论 -
【LeetCode:938. 二叉搜索树的范围和 + DFS】
【LeetCode:938. 二叉搜索树的范围和 + DFS】给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。原创 2024-02-26 10:23:27 · 608 阅读 · 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 · 842 阅读 · 0 评论 -
【LeetCode:2583. 二叉树中的第 K 大层和 + BFS】
【LeetCode:2583. 二叉树中的第 K 大层和 + BFS】给你一棵二叉树的根节点 root 和一个正整数 k 。树中的 层和 是指 同一层 上节点值的总和。返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1 。注意,如果两个节点与根节点的距离相同,则认为它们在同一层。原创 2024-02-23 10:13:26 · 889 阅读 · 0 评论 -
【LeetCode: 889. 根据前序和后序遍历构造二叉树 + DFS】
【LeetCode: 889. 根据前序和后序遍历构造二叉树 + DFS】给定两个整数数组,preorder 和 postorder ,其中 preorder 是一个具有 无重复 值的二叉树的前序遍历,postorder 是同一棵树的后序遍历,重构并返回二叉树。如果存在多个答案,您可以返回其中 任何 一个。原创 2024-02-22 09:57:57 · 675 阅读 · 0 评论 -
【LeetCode: 106. 从中序与后序遍历序列构造二叉树 + DFS】
【LeetCode: 106. 从中序与后序遍历序列构造二叉树 + DFS】给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。原创 2024-02-21 10:16:11 · 603 阅读 · 0 评论 -
【LeetCode: 105. 从前序与中序遍历序列构造二叉树 + DFS】
【LeetCode: 105. 从前序与中序遍历序列构造二叉树 + DFS】给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。原创 2024-02-20 11:01:34 · 895 阅读 · 0 评论