判断是不是二叉搜索树——牛客网

发布时间:2022-06-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了判断是不是二叉搜索树——牛客网脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

描述

给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树。
 
二叉搜索树满足每个节点的左子树上的所有节点均严格小于当前节点且右子树上的所有节点均严格大于当前节点。
 
例:

判断是不是二叉搜索树——牛客网

图1

判断是不是二叉搜索树——牛客网

图2
 
数据范围:节点数量满足 1 le nle 10^4 1n104  ,节点上的值满足 -2^{31} le val le 2^{31}-1231val2311 

示例1

输入:
{1,2,3}
返回值:
false
说明:
如题面图1  

示例2

输入:
{2,1,3}
返回值:
true
说明:
如题面图2  

递归版

PRivate List<Integer> list = new ArrayList<>();
     
public boolean isValidBST (TreeNode root) {
    if (root == null) {
        return true;
    }
    boolean left = isValidBST(root.left);
    if (list.size() > 0 && root.val <= list.get(list.size() - 1)) {
        return false;
    }
    list.add(root.val);
    boolean right = isValidBST(root.right);
    return left &amp;& right;
}
    

迭代版——栈模拟二叉树中序遍历

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return bool布尔型
     * 迭代
     */
    public boolean isValidBST (TreeNode root) {
        // wrITe code here
        Stack<TreeNode> stack = new Stack<>();
        // 当前节点的前驱节点
        TreeNode pre = null;
        while (!stack.iSEMpty() || root != null) {
            // 1、一直走到当前树的左边界
            while (root != null) {
                stack.push(root);
                root = root.left;
            }
            //2、取出栈顶元素,即当前树的最左边界节点,让其跟前驱节点进行比较,即当前节点在中序遍历得到的序列中是前驱节点的后继节点
            TreeNode pop = stack.pop();
            if (pre != null && pre.val > pop.val) {
                return false;
            }
            // 3、将当前节点的右节点设置为根节点继续重复第一个步骤(因为根据BST的定义:当前节点的右节点的值是比当前节点的父节点的值要小的)
            root = pop.right;
            // 4、将当前节点更新为前驱节点
            pre = pop;
        }
        return true;
    }
}

原题链接:https://www.nowcoder.COM/practice/a69242b39baf45dea217815c7dedb52b?tpId=295&tqId=2288088&ru=/exam/oj&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Foj

脚本宝典总结

以上是脚本宝典为你收集整理的判断是不是二叉搜索树——牛客网全部内容,希望文章能够帮你解决判断是不是二叉搜索树——牛客网所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。