剑指 Offer 54:二叉搜索树的第k大节点

简介: 剑指 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

解题

方法一:中序遍历的倒序遍历

因为中序遍历的正序遍历是从小到大遍历

因为题目要中第K大的数,因此可以用中序遍历的倒序遍历

遍历顺序:右->中->左

class Solution {
public:
    int kthLargest(TreeNode* root, int k) {
        stack<TreeNode*> st;
        TreeNode* cur=root;
        while(!st.empty()||cur){
            while(cur){
                st.push(cur);
                cur=cur->right;
            }
            cur=st.top();
            st.pop();
            if(--k==0) return cur->val;
            cur=cur->left;
        }
        return -1;
    }
};
相关文章
|
6天前
|
存储
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
14 1
|
18天前
剑指 Offer 68 - I:二叉搜索树的最近公共祖先
剑指 Offer 68 - I:二叉搜索树的最近公共祖先
429 0
|
18天前
剑指 Offer 68 - II:二叉树的最近公共祖先
剑指 Offer 68 - II:二叉树的最近公共祖先
19 0
|
18天前
剑指 Offer 55 - II:平衡二叉树
剑指 Offer 55 - II:平衡二叉树
21 0
|
18天前
剑指 Offer 36:二叉搜索树与双向链表
剑指 Offer 36:二叉搜索树与双向链表
21 0
|
18天前
剑指 Offer 33:二叉搜索树的后序遍历序列
剑指 Offer 33:二叉搜索树的后序遍历序列
18 0
|
18天前
剑指 Offer 22:链表中倒数第k个节点
剑指 Offer 22:链表中倒数第k个节点
22 1
|
7月前
leetcode 剑指 Offer 22. 链表中倒数第k个节点
leetcode 剑指 Offer 22. 链表中倒数第k个节点
28 0
|
9月前
剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点

热门文章

最新文章