jykim16
8/28/2017 - 4:57 PM

kth-smallest-in-bst

kth-smallest-in-bst

var kthSmallest = function(root, k) {
    let kSmallestElement = NaN;
    let findLastKNodes = (node, isRightNode, parentCountFromLeftTree) => {
        var nthElement = 1; 
        if(node.left) {
            nthElement += findLastKNodes(node.left, isRightNode);
        }
        if (node.right) {
            findLastKNodes(node.right, true, nthElement);
            nthElement += 1;
        }
        if(isRightNode) {
            nthElement += parentCountFromLeftTree; 
        }
        if (nthElement === k) {
            kSmallestElement = node.val;
        }
        return nthElement;
    }
    findLastKNodes(root, false)
    return kSmallestElement;
};