Java 验证二叉搜索树
创始人
2024-05-23 21:31:12
0

验证二叉搜索树

中等

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左子树只包含 小于 当前节点的数。

  • 节点的右子树只包含 大于 当前节点的数。

  • 所有左子树和右子树自身必须也是二叉搜索树。

示例 1:

输入:root = [2,1,3]

输出:true

示例 2:

输入:root = [5,1,4,null,null,3,6]

输出:false

解释:根节点的值是 5 ,但是右子节点的值是 4 。

题解(中序遍历)

  1. 创建节点和list集合,list集合用于节点遍历后值的存储

  1. 声明一个中序遍历方法,递归求解

  1. 传入参数,获取节点值

  1. 遍历集合,根据中序遍历性质,如果找到前一个值大于后一个值,说明该树不符合平衡二叉树的特点,返回false,否则返回true。

中序遍历(左+中+右)

(当前节点左右子树不为空时递归调用)先递归遍历左子树节点,在获取当前节点,在递归遍历右子树节点

/*** 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 {public boolean isValidBST(TreeNode root) {List list = new ArrayList<>();infixOrder(root,list);System.out.println(list);boolean flag = true;for (int i = 1; i < list.size(); i++) {if(list.get(i-1) >= list.get(i)){flag = false;System.out.println(flag);return flag;}}System.out.println(flag);return flag;}public void infixOrder(TreeNode root,List list){if(root != null){if(root.left != null){infixOrder(root.left,list);}list.add(root.val);if(root.right != null){infixOrder(root.right,list);}}}
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...