【力扣算法】230. 二叉搜索树中第K小的元素--二叉树中序遍历套路

描述

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
【力扣算法】230. 二叉搜索树中第K小的元素--二叉树中序遍历套路_第1张图片

算法

因为是二叉搜索树
左子树 小于 根 小于 右子树
所以使用中序遍历就能找到第k小的值

class Solution {
public:
    int res = 0;
    int rank = 0;
    int kthSmallest(TreeNode* root, int k) {
        findNumk(root, k);
        return res;
    }

    void findNumk(TreeNode* node, int k)
    {
        if (node == nullptr) return;
        findNumk(node->left, k);
        rank++;
        if (k == rank)
        {
            res = node->val;
            return;
        }
        findNumk(node->right, k);
    }
};

你可能感兴趣的:(【力扣算法】230. 二叉搜索树中第K小的元素--二叉树中序遍历套路)