网站文章编辑器代码,俄罗斯乌克兰死亡人数,西安 北郊网站建设,怎么看网站使用什么做的给你一个二叉树的根节点 root #xff0c;判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下#xff1a; 节点的左子树只包含小于当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1#xff1a; 输入…给你一个二叉树的根节点 root 判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下 节点的左子树只包含小于当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1 输入root [2,1,3]
输出true
示例 2 输入root [5,1,4,null,null,3,6]
输出false
解释根节点的值是 5 但是右子节点的值是 4 。
解题方法中序遍历左中右顺序依次访问所有的节点
1.首先判断当前根节点是否为空如果为空说明是BST返回true。
2.先进入到左子树的递归如果左子树为空说明是BST返回true否则返回false如果当前根节点的值小于上一个不符合BST高度递增的特性直接返回false。
3.最后更新一下pre的值进入到右子树的递归即可。
/*** 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 {private long pre Long.MIN_VALUE;public boolean isValidBST(TreeNode root) {if (root null) {return true;}if (!isValidBST(root.left) || root.val pre) {return false;}pre root.val;return isValidBST(root.right);}
}