摘要:
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例 1: 输入:root = [1 阅读全文
posted @ 2025-07-17 20:59
caoshikui
阅读(14)
评论(0)
推荐(0)
摘要:
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入:root = [3,5,1,6,2 阅读全文
posted @ 2025-07-17 20:52
caoshikui
阅读(46)
评论(0)
推荐(0)
摘要:
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例 1: 输入:root = [10,5,-3,3,2,n 阅读全文
posted @ 2025-07-17 20:24
caoshikui
阅读(8)
评论(0)
推荐(0)
摘要:
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出: 阅读全文
posted @ 2025-07-17 20:18
caoshikui
阅读(7)
评论(0)
推荐(0)
摘要:
给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1: 输入:root = [1,2,5,3,4,null, 阅读全文
posted @ 2025-07-17 19:23
caoshikui
阅读(8)
评论(0)
推荐(0)
摘要:
import java.util.LinkedList; import java.util.Queue; import java.util.Stack; /** * @author 李文浩 * @version 2017/7/30. */ public class BinaryTree { /** 阅读全文
posted @ 2025-07-17 19:11
caoshikui
阅读(9)
评论(0)
推荐(0)
摘要:
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入:root = [1,2,3,null,5,null,4] 输出:[1,3,4] 解释: 示例 2: 输入:root = [1,2,3,4,null,null,null,5 阅读全文
posted @ 2025-07-17 17:37
caoshikui
阅读(7)
评论(0)
推荐(0)
摘要:
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 示例 1: 输入:root = [3,1,4,null,2], k = 1 输出:1 示例 2: 输入:root = [5,3,6,2,4,null,null,1], k = 3 阅读全文
posted @ 2025-07-17 17:03
caoshikui
阅读(4)
评论(0)
推荐(0)
摘要:
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入:root = [2,1,3] 输出:true 示例 2 阅读全文
posted @ 2025-07-17 16:46
caoshikui
阅读(6)
评论(0)
推荐(0)
摘要:
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 示例 1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案: 示例 2: 输入 阅读全文
posted @ 2025-07-17 16:23
caoshikui
阅读(6)
评论(0)
推荐(0)
摘要:
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root = [1] 输出:[[1]] 示例 3: 输入 阅读全文
posted @ 2025-07-17 16:16
caoshikui
阅读(5)
评论(0)
推荐(0)
摘要:
给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1: 输入:root = [1,2,3,4,5] 输出:3 解释:3 ,取路径 [4,2,1 阅读全文
posted @ 2025-07-17 16:01
caoshikui
阅读(7)
评论(0)
推荐(0)
摘要:
给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,null,3] 输出:false 递归 class Solution { public boolean 阅读全文
posted @ 2025-07-17 15:34
caoshikui
阅读(9)
评论(0)
推荐(0)
摘要:
示例 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 = [] 输出:[] 递归 class Solution { public TreeNode inv 阅读全文
posted @ 2025-07-17 15:16
caoshikui
阅读(4)
评论(0)
推荐(0)
摘要:
给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root = [1,null,2] 输出:2 递归: class Solut 阅读全文
posted @ 2025-07-17 15:06
caoshikui
阅读(5)
评论(0)
推荐(0)
摘要:
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 方法一:递归 /** * Definition fo 阅读全文
posted @ 2025-07-17 14:51
caoshikui
阅读(5)
评论(0)
推荐(0)
摘要:
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否 阅读全文
posted @ 2025-07-17 14:19
caoshikui
阅读(4)
评论(0)
推荐(0)
摘要:
给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2->6 ] 阅读全文
posted @ 2025-07-17 13:52
caoshikui
阅读(39)
评论(0)
推荐(0)
摘要:
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head = [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head = [-1,5,3,4,0] 输出:[-1,0,3,4,5] 示例 3: 输入:head = [] 输出:[] 方法一 阅读全文
posted @ 2025-07-17 11:13
caoshikui
阅读(11)
评论(0)
推荐(0)
浙公网安备 33010602011771号