• 剑指 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 ≤ 二叉搜索树元素个数
    
    

    解题思路:

    中序遍历(左=》根=》右)从小到大,则右=》根=》左从大变小,可使用递归。
    

    代码:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        int m=0;
        int n=0;
        public int kthLargest(TreeNode root, int k) {  
          if(root==null){
                return -1;
            }
            kthLargest(root.right,k);
            m++;
            if(k==m){
                n=root.val;
                return root.val;
            }
            
            kthLargest(root.left,k);
            return n;
        }
        
    }
    
  • 相关阅读:
    zju 2886
    zju 2478
    UVA350-水题
    UVA699-落叶-二叉树
    UVA327
    UVA548
    java环境变量
    synchronized关键字
    uva297
    UVA196
  • 原文地址:https://www.cnblogs.com/nmydt/p/14256362.html
Copyright © 2020-2023  润新知