剑指Offer:62-二叉搜索树的第k个结点

题目描述

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

思路

实现1-中序遍历

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    TreeNode* KthNode(TreeNode* pRoot, int k)
    {
        //中序遍历就行
        inOrder(pRoot, k);
        return res;
    }
private:
    void inOrder(TreeNode* pRoot, int& k)
    {
        if(!pRoot)
            return ;
        inOrder(pRoot->left, k);
        if(--k==0)
            res = pRoot;
        inOrder(pRoot->right, k);
    }
    TreeNode* res = nullptr;
};

你可能感兴趣的:(剑指Offer:62-二叉搜索树的第k个结点)