前言
提示:这里可以添加本文要记录的大概内容:
验证二叉搜索树
—LeetCode题目地址:https://leetcode.cn/problems/validate-binary-search-tree/description/
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目
验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
提示:
树中节点数目范围在[1, 104] 内 -2^31 <= Node.val <= 2^31 - 1
二、思路
这道题可以利用二叉排序树的特点,就是二叉排序树经过中序遍历之后,会是一个递增有序的序列,那么可以考虑通过中序遍历,把所有结点保存到一个列表中,然后查看列表的数是否有序的,如果是那么他就是二叉搜索树,否则就不是。
二、代码实现
方法代码实现
/**
* 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 void midserch(TreeNode root,List<Integer> list){
if(root==null)
return ;
midserch(root.left,list);
list.add(root.val);
midserch(root.right,list);
}
public boolean isValidBST(TreeNode root) {
List<Integer> list =new ArrayList();
midserch(root,list);
boolean flag=true;
if(list.size()==1)
return flag;
for(int i=1;i<list.size();i++){
if(list.get(i)<=list.get(i-1))
{
flag=false;
break;
}
}
return flag;
}
}
总结
提示:这里对文章进行总结
递归对于我来说太难了,感觉很抽象。