LeetCode刷题笔记 98. 验证二叉搜索树*

mac2022-06-30  30

题目描述

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

假设一个二叉搜索树具有如下特征:

节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。

总结

需要注意 非边界节点需要满足两个条件,大于父节点,小于祖父节点,或者小于父节点,大于祖父节点 SDC值得好好看看 SDC2把搜索二叉树用中序转换为数组,遍历判断就行了

Sample & Demo Code 1

class Solution { public boolean isValidBST(TreeNode root) { return isValid(root, null, null); } private boolean isValid(TreeNode root, TreeNode min, TreeNode max) { if(root == null)return true; if((max!=null && root.val >= max.val)|| (min!=null && root.val <= min.val)) return false; if(root.left!=null && !isValid(root.left, min, root))return false; if(root.right!=null && !isValid(root.right, root, max))return false; return true; } }

Sample & Demo Code 2

class Solution { public boolean isValidBST(TreeNode root) { Stack<TreeNode> stack = new Stack(); double inorder = - Double.MAX_VALUE; while(!stack.isEmpty() || root != null) { while(root != null) { stack.push(root); root = root.left; } root = stack.pop(); if(root.val <= inorder) return false; inorder = root.val; root = root.right; } return true; } }

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/validate-binary-search-tree

最新回复(0)