腾讯五十题No.40二叉树搜索中第k小的元素

题目链接
二叉树特点左子树小于根节点根节点小于右子树

class Solution {
    public int kthSmallest(TreeNode root, int k) {
        //左子树节点个数
        int leftN = findChild(root.left);
        //如果k等于左子树节点加一,则第k个数为根节点
        if(leftN + 1 == k) return root.val;
        //如果小于左子树节点个数,就递归左子树
        else if(k <= leftN){
            return kthSmallest(root.left,k);
        }else{
            //大于左子树节点数+1,就递归右子树
            return kthSmallest(root.right,k-leftN-1);
        }
    }
    //获取左子树节点个数
    public int findChild(TreeNode root){
        if(root == null) return 0;
        return findChild(root.left)+findChild(root.right)+1;
    }
}

posted @   蹇爱黄  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示