题解 | #二叉搜索树的第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-23 14:18
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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