仓库源文站点原文


title: '算法:二叉搜索树的第k个结点' cover: https://img.paulzzh.com/touhou/random?64 categories: 算法题目 date: 1996-07-27 08:00:00 tags: [算法题目, 二叉树, 搜索]

toc: true

<br/>

<!--more-->

二叉搜索树的第k个结点

二叉搜索树的第k个结点

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

例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。


分析

对于二叉树的中序遍历即为有序数列;

所以设置一个index, 对二叉树进行中序遍历;

如果index==k则直接返回;


代码

public class Solution {
    int index = 0;

    TreeNode KthNode(TreeNode root, int k) {
        if (root != null) {
            TreeNode node = KthNode(root.left, k);
            if (node != null)
                return node;
            index++;
            if (index == k)
                return root;
            node = KthNode(root.right, k);
            if (node != null)
                return node;
        }
        return null;
    }
}