题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。
示例1
输入
{5,3,7,2,4,6,8},3
返回值
{4}
解题思路
根据二叉搜索树的概念,一路向左,最左下是最小的,之后是右子树。然后递归到上一层
完全遍历完左子树之后,再去右子树
示例中{5,3,7,2,4,6,8}的树形结构为
----5
-- 3---7
-2 4 6 8
java代码实现

/*
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 ans=null;//记录结果
    TreeNode KthNode(TreeNode pRoot, int k)
    {
        if(pRoot == null) return ans;
        KthNode(pRoot.left,k);//一直递归找左子树,只有左子树为空,才会跳出
        count++;
        if(count==k){//跳出时,左子树为空,则证明根节点是当前的第几小节点
            ans=pRoot;
        }
        if(count>k)
            return ans;
        else{
            KthNode(pRoot.right,k);//递归右子树也是先一路向左,最后左没有了就是第几小元素
        }
        return ans;
    }


}