From 3839cde0108bc54a20806b0fe02beeecc49ef436 Mon Sep 17 00:00:00 2001
From: Cool <747682928@qq.com>
Date: Sat, 31 Aug 2024 01:12:56 +0800
Subject: [PATCH] 2024/8/30 LeetCode Hot100 binaryTree

---
 .../com/cool/hot100/binary_tree/Num108.java   | 23 +++++----
 .../com/cool/hot100/binary_tree/Num98.java    | 47 +++++++++++++++++++
 2 files changed, 62 insertions(+), 8 deletions(-)
 create mode 100644 src/main/java/com/cool/hot100/binary_tree/Num98.java

diff --git a/src/main/java/com/cool/hot100/binary_tree/Num108.java b/src/main/java/com/cool/hot100/binary_tree/Num108.java
index 660a15e..69bfa8a 100644
--- a/src/main/java/com/cool/hot100/binary_tree/Num108.java
+++ b/src/main/java/com/cool/hot100/binary_tree/Num108.java
@@ -17,16 +17,23 @@ public class Num108 {
     }
 
     public TreeNode buildTree(int[] nums, int start, int end) {
-        if(start>=end) return null;
-        TreeNode node=new TreeNode();
-        int index=(start+end)/2;
-        node.val=nums[index];
-        node.left=buildTree(nums,start,index-1);
-        node.right=buildTree(nums,index+1,end);
+        if (start > end) return null;
+        if(start==end) return new TreeNode(nums[start]);
+        TreeNode node = new TreeNode();
+        if(end-start<2){
+            node.val=nums[end];
+            node.left= new TreeNode(nums[start]);
+            return node;
+        }
+        int index = (start + end) / 2;
+        node.val = nums[index];
+        node.left = buildTree(nums, start, index - 1);
+        node.right = buildTree(nums, index + 1, end);
         return node;
     }
+
     @Test
-    public void test(){
-        sortedArrayToBST(new int[]{-10,-3,0,5,9});
+    public void test() {
+        sortedArrayToBST(new int[]{-10, -3, 0, 5, 9});
     }
 }
diff --git a/src/main/java/com/cool/hot100/binary_tree/Num98.java b/src/main/java/com/cool/hot100/binary_tree/Num98.java
new file mode 100644
index 0000000..3502baf
--- /dev/null
+++ b/src/main/java/com/cool/hot100/binary_tree/Num98.java
@@ -0,0 +1,47 @@
+package com.cool.hot100.binary_tree;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created with IntelliJ IDEA.
+ *
+ * @Author: Cool
+ * @Date: 2024/08/31/0:03
+ * DayNumber 2
+ * Hard 2
+ * Level 3
+ */
+public class Num98 {
+
+
+    public boolean isValidBST(TreeNode root) {
+        if (root == null) return true;
+        return isValidBST(root,Long.MIN_VALUE,Long.MAX_VALUE);
+//        List<Integer> list = new ArrayList<>();
+//        validBST(root, list);
+//        for (int i = 0; i < list.size() - 1; i++) {
+//            if (list.get(i) >= list.get(i + 1)) return false;
+//        }
+//        return true;
+    }
+
+
+    //解法1 中序遍历比较
+    public void validBST(TreeNode root, List<Integer> list) {
+        if (root == null) return;
+        validBST(root.left, list);
+        list.add(root.val);
+        validBST(root.right, list);
+    }
+
+    //解法2
+    public boolean isValidBST(TreeNode root, long start, long end) {
+        if(root==null)return true;
+        if(root.val>start&&root.val<end){
+            return isValidBST(root.left,start,root.val)&&isValidBST(root.right,root.val,end);
+        }
+        return false;
+    }
+
+}