美文网首页
剑指 offer 笔记 62 | 二叉搜索树的第k个结点

剑指 offer 笔记 62 | 二叉搜索树的第k个结点

作者: ProudLin | 来源:发表于2019-11-15 22:52 被阅读0次

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

思路分析
二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。
所以,按照中序遍历顺序找到第k个结点就是结果。

解释说明:

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);
    }

}

相关文章

网友评论

      本文标题:剑指 offer 笔记 62 | 二叉搜索树的第k个结点

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