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 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 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