【剑指Offer】二叉搜索树的第k大节点
发布日期:2022-02-10 08:55:18 浏览次数:31 分类:技术文章

本文共 732 字,大约阅读时间需要 2 分钟。

题目

给定一棵二叉搜索树,请找出其中第k大的节点。

思路

主要是二叉搜索树的性质,中序遍历的倒序问题

  • 二叉搜索树的 中序遍历倒序 为 递减序列 。
  • 因此,求 “二叉搜索树第 k 大的节点” 可转化为求 “此树的中序遍历倒序的第 k 个节点” 。

题解链接:

代码

/** * 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 res;    int m;    int kthLargest(TreeNode* root, int k) {        res = 0;        m = k;        dfs(root);        return res;    }    void dfs(TreeNode* root){        if(root == NULL){            return;        }        dfs(root->right);        if(m == 0){            return;        }        m--;        if(m == 0){            res = root->val;        }        dfs(root->left);    }};

 

转载地址:https://blog.csdn.net/hanmin822/article/details/106012216 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】在排序数组中查找数字 I
下一篇:【剑指Offer】连续子数组的最大和

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月09日 11时45分53秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章