剑指 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 }
复制代码

 

posted @   堤苏白  阅读(47)  评论(0编辑  收藏  举报
编辑推荐:
· 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应用必不可少的技术
点击右上角即可分享
微信分享提示