您的位置:首页 > 科技 > 能源 > 98.验证二叉搜索树

98.验证二叉搜索树

2025/2/1 4:54:12 来源:https://blog.csdn.net/weixin_57865902/article/details/139623186  浏览:    关键词:98.验证二叉搜索树

·题目描述

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左

    子树

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

示例 1:

输入:root = [2,1,3]
输出:true

示例 2:

输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。

·解题思路

就是不能判断该节点和自己的左右子结点的大小,要判断左右子树的全部结点,因此需要引入两个指针min 和 max 来维护判断。

  • 在这个调用中,val 是当前节点的值,被传递给右子树作为新的下界 lower
    • 这意味着右子树中所有节点的值必须大于 val
  • upper 是右子树的上界,保持不变,因为右子树的所有节点还必须小于这个上界。

·Java代码

class Solution {public boolean isSymmetric(TreeNode root) {return dfs(root , null , null);}public boolean dfs(TreeNode node , Integer min , Integer max){if(node == null ) return true;int val = node. val ;if(min != null && val <= min) return false;if(max != null && val >= max) return false;if(!dfs(node.left , min , val)) return false;if(!dfs(node.right , val , max)) return false;return true;}public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(int x){val = x;}TreeNode(int val, TreeNode left, TreeNode right){this.val = val;this.left = left;this.right = right;}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com