剑指 Offer 54. 二叉搜索树的第k大节点
题目:
给定一棵二叉搜索树,请找出其中第k大的节点。
示例 1:
输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4
示例 2:
输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1 输出: 4
限制:
1 ≤ k ≤ 二叉搜索树元素个数
代码:
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution { 11 static int count=0; 12 static int res=0; 13 public int kthLargest(TreeNode root, int k) { 14 count=0; 15 max_k(root,k); 16 return res; 17 } 18 public static void max_k(TreeNode root,int k){ 19 //考察第k大的,先进右子树,第k小的,进左子树先 count!=k,条件时避免已经找到还继续递归下去 20 if(count!=k&&root.right!=null){ 21 max_k(root.right,k); 22 } 23 //判断当前结点是否时第k大 24 if(count!=k){ 25 count++; 26 if(count==k){ 27 res=root.val; 28 } 29 } 30 31 if(count!=k&&root.left!=null){ 32 max_k(root.left,k); 33 } 34 35 36 } 37 }
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术