62.二叉搜索树的第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 count=0;
    TreeNode KthNode(TreeNode pRoot, int k) {
        //递归终止条件
        if(pRoot==null){
            return null;
        }
        
        //左子树中找符合要求的节点
        TreeNode node=KthNode(pRoot.left,k);
        if(node!=null) return node;
        
        //
        if(++count==k) return pRoot;

        //右子树中找符合要求的节点
        node=KthNode(pRoot.right,k);
        if(node!=null) return node;
        
        return null;
    }
}
二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。
按照中序遍历顺序找到第k个结点便可。
相关文章
相关标签/搜索