前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【剑指Offer】54. 二叉查找树的第 K 个结点

【剑指Offer】54. 二叉查找树的第 K 个结点

作者头像
瑞新
发布2020-12-07 10:10:46
2510
发布2020-12-07 10:10:46
举报
文章被收录于专栏:用户3288143的专栏

力扣 NowCoder

解题思路

利用二叉查找树中序遍历有序的特点。

代码语言:javascript
复制
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
        private static int k1, res;

    public int kthLargest(TreeNode root, int k) {
        k1 = k;
        // 中序遍历(递增) 左根右
        dfs(root);
        return res;
    }

    private static void dfs(TreeNode root) {
        if(root == null || k1 == 0)
            return;
        // 第k大倒序
        // 右
        dfs(root.right);
        // 根
        if(--k1 == 0)
            res = root.val;
        // 左
        dfs(root.left);
    }
}

题目描述

题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。

代码语言:javascript
复制
private TreeNode ret;
private int cnt = 0;

public TreeNode KthNode(TreeNode pRoot, int k) {
    inOrder(pRoot, k);
    return ret;
}

private void inOrder(TreeNode root, int k) {
    if (root == null || cnt >= k)
        return;
    inOrder(root.left, k);
    cnt++;
    if (cnt == k)
        ret = root;
    inOrder(root.right, k);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解题思路
  • 题目描述
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档