美文网首页
剑指 offer 学习之二叉查找树的第 K 个结点

剑指 offer 学习之二叉查找树的第 K 个结点

作者: Kevin_小飞象 | 来源:发表于2020-03-25 11:25 被阅读0次

题目描述

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

题目链接:牛客网

解题思路

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

/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    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);
    }
}

测试结果

image.png

相关文章

网友评论

      本文标题:剑指 offer 学习之二叉查找树的第 K 个结点

      本文链接:https://www.haomeiwen.com/subject/atstuhtx.html