📄 5_validate_bst.js
/home/palash/git/misc/algorithms/ctci/ch04/5_validate_bst.js
Language: js • Lines: 96
const validateBST = (tree) => {
    return checkTree(tree, Number.MIN_VALUE, Number.MAX_VALUE) > 0
}

const checkTree = (tree, min, max) => {
    if(!tree) {
        return true
    }

    if(tree.val < max && tree.val > min) {
        return checkTree(tree.left, min, tree.val) && checkTree(tree.right, tree.val, max)
    } else {
        return false
    }
}

var tree = {
    "left": {
        "left": {
            "right": {
                "val": 18
            },
            "val": 12
        },
        "right": {
            "right": {
                "val": 37
            },
            "val": 35
        },
        "val": 22
    },
    "right": {
        "left": {
            "right": {
                "val": 58
            },
            "val": 54
        },
        "right": {
            "right": {
                "val": 80
            },
            "val": 72
        },
        "val": 60
    },
    "val": 45
}

console.log(validateBST(tree))

tree = {
    "left": {
        "left": {
            "right": {
                "val": 18
            },
            "val": 12
        },
        "right": {
            "right": {
                "val": 37
            },
            "val": 35
        },
        "val": 22
    },
    "right": {
        "left": {
            "right": {
                "val": 58
            },
            "val": 54
        },
        "right": {
            "right": {
                "val": 80,
                "left": {
                    "val":90,
                    "left":{
                        "val":91,
                        "left":{
                            "val":92
                        }
                    }
                }
            },
            "val": 72
        },
        "val": 60
    },
    "val": 45
}

console.log(validateBST(tree))