leetcode-树练习-validate-binary-search-tree

validate-binary-search-tree

https://www.nowcoder.com/practice/fd7f880072914464a13b89af242c0ce5?tpId=46&tqId=29080&tPage=1&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking

判断给出的二叉树是否是一个二叉搜索树(BST)
二叉搜索树的定义如下
一个节点的左子树上节点的值都小于自身的节点值
一个节点的右子树上节点的值都小于自身的节点值
所有节点的左右子树都必须是二叉搜索树

我在之前的专栏中也写过,树的题目解决思路基本上等于:递归求解+使用栈数据结构+使用队列数据结构。
优先考虑递归求解,因为递归写的方法阅读起来比较容易理解。
这道题目也可以用递归,只不过一般的递归,函数返回值只有一个,那就是题目当前要求的结果,比如这道题目返回的是「是否是二叉搜索树」,但是其上层递归,仅靠这一个结果是无法决定递归结果。因为我们为了求解树是否为二叉搜索树,不仅要知道其子树是否是二叉搜索树,还要知道子树中的最大值和最小值。因此我们需要定义出一个复合结构的递归求解结果。

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    class ResultData{
        public boolean isValid;
        public int min;
        public int max;
        public ResultData(){
            this.isValid = true;
            min = Integer.MAX_VALUE;
            max = Integer.MIN_VALUE;
        }
    }

    public ResultData help(TreeNode root){
        ResultData result = new ResultData();
        if(root == null)return result;/

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白刷Leetcode 文章被收录于专栏

那些必刷的leetcode

全部评论

相关推荐

04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
韵不凡:软件开发的工作需要博士吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务