zoukankan      html  css  js  c++  java
  • 剑指 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 ≤ 二叉搜索树元素个数
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof

    代码实现

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        int kthLargest(TreeNode* root, int k) {
            TreeNode* p = root;
            stack<TreeNode*> node_stack;
            while(p != NULL || !node_stack.empty()) {
                while(p != NULL) {
                    node_stack.push(p);
                    p = p->right;
                }
                if(!node_stack.empty()) {
                    TreeNode* t = node_stack.top();
                    p = t->left;
                    node_stack.pop();
                    k--;
                    if(k == 0)  return t->val;
                }
            }
            return NULL;
        }
    };
    

    思路解析

    • 常用的中序遍历二叉搜索树(左子树->根节点->右子树),可从小到大输出元素。
    • 逆序中序遍历二叉搜索树(右子树->根节点->左子树),当输出第k个元素时直接返回。
    • 使用循环中序遍历二叉搜索树。
  • 相关阅读:
    X509IncludeOption 枚举
    SHA-1算法——(2)
    SHA-1算法
    消息摘要算法
    Oid 类
    @param注解
    类X509Certificate2
    sq分页
    svn不是内部或外部命令?
    PhpStorm配置svn:Can't use Subversion command line client:svn
  • 原文地址:https://www.cnblogs.com/xqmeng/p/13633021.html
Copyright © 2011-2022 走看看