LeetCode解析------98. 验证二叉搜索树-深度优先搜索

题目:

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

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

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

输入:
2
/ \
1 3
输出: true

示例 2:

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

简单介绍:
题目:验证二叉搜索树
题目难度:中等
使用语言:JAVA
这道题来自leetcode题库的深度优先搜索标签。

解题思路:
主要解法:中序遍历与递归。

维持一个pre值,保存上一次结点的值。
中序遍历(左-》根-》右)保证下一个结点的值大于之前结点的值。

数据结构:
要实现对数据的操作,我们要先明确存储数据的数据结构。
该题的数据结构的作用:
1.整型保存上一个结点的值

算法:
既然明确了我们的数据结构,我们就可以开始我们的算法分析了。
1.第一步,初始化工作。
2.第二步,中序遍历,递归验证。
3.第三步,返回结果。

代码部分:


//中序遍历,保证下一个结点大于之前的结点
public class Solution {
    //最小值
    long pre=Long.MIN_VALUE;
    public boolean isValidBST(TreeNode root) {

        if(root==null) return true;
        
        if(!isValidBST(root.left)) return false;
        
        if(root.val<=pre) return false;
        pre=root.val;
        
        return isValidBST(root.right);

    }
}



时间、空间复杂度:

LeetCode解析------98. 验证二叉搜索树-深度优先搜索_第1张图片

结语:
晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!

你可能感兴趣的:(leetcode,编程算法)