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

 

posted @ 2016-09-03 16:54  Pickle  阅读(571)  评论(0编辑  收藏  举报