力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
给你一个二叉树的根节点
root
,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:
- 节点的左子树只包含 小于 当前节点的数。
- 节点的右子树只包含 大于 当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
解题参考:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
代码如下:迭代
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public boolean isValidBST(TreeNode root) {if(root == null){return true;}Stack<TreeNode> s = new Stack<>();TreeNode pre = null;while(root != null || !s.isEmpty()){while(root != null){s.push(root);root = root.left;}TreeNode node = s.pop();if(pre != null && node.val <= pre.val){return false;}pre = node;root = node.right;}return true;}
}
总结:
刷这道验证二叉搜索树,看到了一位大佬的解法,和他的一些列文章和B站上的教学视频,看目录总结的很好,后面刷题会跟着他的内容一起学习起来
代码随想录