文章506
标签266
分类65

算法:二叉搜索树的第k个结点


二叉搜索树的第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;
    }
}

本文作者:Jasonkay
本文链接:https://jasonkayzk.github.io/1996/07/27/算法-二叉搜索树的第k个结点/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可