題目描述
leetcode地址
二叉搜索樹是指:左子樹的節點值嚴格小于根節點,右子樹的節點值嚴格大于根節點。
現給出一個二叉樹,校驗其是否滿足二叉搜索樹的特性。
比如下圖中,右節點4小于根節點5,不是二叉搜索樹。
截屏2021-03-01 上午11.27.15.png
思路分析
分解問題為一個一個的子問題,一顆大的二叉樹是搜索樹的前提是,其左右子樹也是二叉樹,只要在判斷子樹過程中發現有不滿足條件的,則整個二叉樹不滿足條件。
截屏2021-03-01 下午6.01.26.png
代碼實現
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isValidBST = function(root) {
if(root === null || (root.left === null && root.right === null)) return true
return recursive(root, -Infinity, Infinity)
function recursive(node, left, right) {
if(node === null) return true;
if(node.val <= left || node.val >= right) return false
return recursive(node.left, left, node.val) && recursive(node.right, node.val, right)
}
};