二叉搜索树的第k个结点

Posted 码上哈希

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉搜索树的第k个结点相关的知识,希望对你有一定的参考价值。

给定一颗二叉搜索树,请找出其中的第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 {
    int cnt = 0;
    TreeNode cnode = null;
    TreeNode KthNode(TreeNode pRoot, int k) {
        if (pRoot == null || k == 0)
            return null;
          
        pre(pRoot, k);
        return cnode;
    }
    
    void pre(TreeNode node, int k) {
        if (node == null)
            return ;
        
        pre(node.left, k);
        cnt ++;
        if (cnt == k) {
            cnode = node;
            return ;
        }
        pre(node.right, k);
        return ;
    }
}

 

以上是关于二叉搜索树的第k个结点的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer二叉搜索树的第k个结点

《剑指offer》:[63]二叉搜索树的第K个结点

二叉搜索树的第k个结点

二叉搜索树的第k个结点(第k小)

剑指offer 62.二叉搜索树的第k个结点

62二叉搜索树的第k个结点