题解 | #二叉搜索树的第k个节点#
二叉搜索树的第k个节点
http://www.nowcoder.com/practice/57aa0bab91884a10b5136ca2c087f8ff
二叉搜索树的第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 };
相关推荐