题解 | #二叉搜索树的第k个节点#

二叉搜索树的第k个节点

http://www.nowcoder.com/practice/57aa0bab91884a10b5136ca2c087f8ff

function KthNode( proot ,  k ) { 
    function getChildNum(node){   // 定义一个获取数节点树的函数
        if(!node){
            return 0
        }
        return 1 + getChildNum(node.left) + getChildNum(node.right)
    }
    if(!proot || getChildNum(proot) < k || k<=0 ){  // 处理异常情况
        return -1
    }
    let  numLeft = getChildNum(proot.left)
    let  numRight = getChildNum(proot.right)  // 根节点左边永远比他小,所以拆分左右子树
    if(k === numLeft +1){
        return proot.val  // 递归终止条件
    }
    if(k <= numLeft){
        return KthNode(proot.left,k)
    }
    return KthNode(proot.right,k - numLeft -1)  // 更新入参

}
module.exports = {
    KthNode : KthNode
};


全部评论

相关推荐

07-02 13:50
闽江学院 Java
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司10个岗位
点赞 评论 收藏
分享
牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务