博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-验证二叉搜索树
阅读量:5275 次
发布时间:2019-06-14

本文共 1711 字,大约阅读时间需要 5 分钟。

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

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

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

示例 1:

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

示例 2:

输入:    5   / \  1   4     / \    3   6输出: false解释: 输入为: [5,1,4,null,null,3,6]。     根节点的值为 5 ,但是其右子节点值为 4 。 思路:了解中序遍历的过程,利用中序遍历,将所有的数组取出,如果是取出的数字形成数组是从小到大排列的,则说明是探索二叉树。
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/class Solution {    List
list=new ArrayList(); public boolean isValidBST(TreeNode root) { inOrder(root,list); for(int i=1;i
=list.get(i))return false; } return true; } public void inOrder(TreeNode root,List list){ //中序遍历! if(root==null)return; inOrder(root.left,list); list.add(root.val); //中序遍历是先访问左子树,进行操作之后,再访问右子树 inOrder(root.right,list); } }

 

方法二:初始化时带入系统最大值和最小值,在递归过程中换成它们自己的节点值,用long代替int就是为了包括int的边界条件,代码如下:
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/class Solution {    public boolean isValidBST(TreeNode root) {        return isValid(root,Long.MIN_VALUE,Long.MAX_VALUE);    }    public boolean isValid(TreeNode root,long a,long b){         //递归函数式,分别向左子树和右子树递归        if(root==null)return true;        if(root.val<=a||root.val>=b)return false;    //若为结点的左子树,比节点的值大,或者是结点的右子树,比结点的值小,都返回False        return isValid(root.left,a,root.val)&&isValid(root.right,root.val,b);    //将左子树和右子树递归    }}

 

转载于:https://www.cnblogs.com/patatoforsyj/p/9491320.html

你可能感兴趣的文章
c# 文件笔记
查看>>
类和结构
查看>>
typeset shell 用法
查看>>
python 之 循环语句
查看>>
心得25--JDK新特性9-泛型1-加深介绍
查看>>
[转]ceph网络通信模块_以monitor模块为例
查看>>
HDOJ 1754 I Hate It(线段树基本操作)
查看>>
latex tree
查看>>
安装NVIDIA驱动时禁用自带nouveau驱动
查看>>
HDU-1255 覆盖的面积 (扫描线)
查看>>
【USACO】 奶牛会展
查看>>
继承和多态
查看>>
Dijkstra+计算几何 POJ 2502 Subway
查看>>
修复IE不能执行JS的方法
查看>>
程序员究竟该如何提高效率zt
查看>>
希尔排序法(缩小增量法)
查看>>
PHP编程基础学习(一)——数据类型
查看>>
MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
查看>>
NPOI处理Word文本中上下角标
查看>>
Android笔记 Handler
查看>>