欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

230二叉搜索树中第K个小的元素

程序员文章站 2022-05-20 19:09:39
...

题目描述

给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。

说明:
你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

思路分析

BST中序遍历升序的特性,基于中序遍历改。

递归终止的条件是什么?一次递归中要进行什么操作?递归想要返回什么信息?

终止条件:结点为空

递归中操作:count记录当前为第n个节点,当count=k,赋值返回。

代码实现

    public int kthSmallest(TreeNode root, int k) {
        if (root == null) {
            return 0;
        }
        process(root, k);
        return ret;
    }

     int count = 0,ret=0;

    public void process(TreeNode root, int k) {
        if (root == null) {
            return;
        }
        process(root.left, k);
        
        if (++count == k) {
            ret = root.val;
            return;
        }
        process(root.right, k);
    }