LeetCode-98.Validate Binary Search Tree
Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a BST is defined as follows:
- The left subtree of a node contains only nodes with keys less than the node's key.
- The right subtree of a node contains only nodes with keys greater than the node's key.
- Both the left and right subtrees must also be binary search trees.
Example 1:
Input: 2 / \ 1 3 Output: true
Example 2:
5 / \ 1 4 / \ 3 6 Output: false Explanation: The input is: [5,1,4,null,null,3,6]. The root node's value is 5 but its right child's value is 4.
中序遍历的结果是一个递增的序列,时间复杂度为O(n)
class Solution {//树 中序遍历 递归 mytip private TreeNode pre = null; public boolean isValidBST(TreeNode root) { return isValid(root); } private boolean isValid(TreeNode root){ if(null==root){ return true; } if (!isValid(root.left)||(pre!=null&&root.val<=pre.val)){//注意一定是<= return false; } pre = root; return isValid(root.right); } }
时间复杂度为O(n)
class Solution {//树 递归 mytip public boolean isValidBST(TreeNode root) { long max = Long.MAX_VALUE;//Integer.MAX_VALUE不可以,要扩大范围 long min = Long.MIN_VALUE; return isValid(root,min,max); } private boolean isValid(TreeNode root,long min,long max){ if(null==root){ return true; } if(root.val<=min||root.val>=max){ return false; } return isValid(root.left,min,root.val)&&isValid(root.right,root.val,max); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步