二叉树寻找最k小值

/**
* 注意:left/right值若没有显示设置为null,值即为undefined
* 在调用二叉树前、中、后序遍历方法时,由于参数设置了默认值(tree)
* 所以进入了死循环
*/
const tree = {
    value: 5,
    left: {
        value: 3,
        left: {
            value: 2,
            left: null,
            right: null
        },
        right: {
            value: 4,
            left: null,
            right: null
        }
    },
    right: {
        value: 7,
        left: {
            value: 6,
            left: null,
            right: null
        },
        right: {
            value: 8,
            left: null,
            right: null
        }
    }
}
/**
* 中序遍历
* left -> root -> right
*/
const inOrderTraverse = (node = tree, callback = () => {}) => {
    if(!node) return
    inOrderTraverse(node.left)
    callback(node.value)
    inOrderTraverse(node.right)
}

  结果数组

const orderTraverse = []

  

const getKthTreeValue = (node = tree, k = 3) => {
    inOrderTraverse(node, (value) => orderTraverse.push(value))
    return orderTraverse[k - 1]
}

  

posted @ 2023-01-27 00:07  671_MrSix  阅读(23)  评论(0编辑  收藏  举报