From fede86e1bba7fe6cbe2fcf8dc2eca0c156d7315a Mon Sep 17 00:00:00 2001 From: Peter Chen Date: Sat, 1 Nov 2025 11:10:06 +0800 Subject: [PATCH 1/2] Add unit tests for the "Kth Smallest Element in a BST" problem. --- src/KthSmallestElementInaBST230.java | 30 ------------ .../medium/KthSmallestElementInABST230.java | 28 +++++++++++ .../KthSmallestElementInABST230Test.java | 48 +++++++++++++++++++ 3 files changed, 76 insertions(+), 30 deletions(-) delete mode 100644 src/KthSmallestElementInaBST230.java create mode 100644 src/main/java/com/leetcode/medium/KthSmallestElementInABST230.java create mode 100644 src/test/java/com/leetcode/medium/KthSmallestElementInABST230Test.java diff --git a/src/KthSmallestElementInaBST230.java b/src/KthSmallestElementInaBST230.java deleted file mode 100644 index 070bdf7..0000000 --- a/src/KthSmallestElementInaBST230.java +++ /dev/null @@ -1,30 +0,0 @@ -// Tree, Depth-First Search, Binary Search Tree, Binary Tree - -import java.util.List; -import java.util.ArrayList; - -public class KthSmallestElementInaBST230 { - private void inorder(TreeNode node, List res) { - if (node == null) { - return; - } - this.inorder(node.left, res); - res.add(node.val); - this.inorder(node.right, res); - } - /* - Time complexity : O(N) to build a traversal. - Space complexity : O(N) to keep an inorder traversal. - */ - public int kthSmallest(TreeNode root, int k) { - List res = new ArrayList<>(); - this.inorder(root, res); - return res.get(k - 1); - } - - public static void main(String[] args) { - TreeNode root = new TreeNode(3, new TreeNode(1, null, new TreeNode(2)), new TreeNode(4)); - int k = 1; - System.out.println(new KthSmallestElementInaBST230().kthSmallest(root, k)); // 1 - } -} diff --git a/src/main/java/com/leetcode/medium/KthSmallestElementInABST230.java b/src/main/java/com/leetcode/medium/KthSmallestElementInABST230.java new file mode 100644 index 0000000..0a0b393 --- /dev/null +++ b/src/main/java/com/leetcode/medium/KthSmallestElementInABST230.java @@ -0,0 +1,28 @@ +// Tags: Tree, Binary Search Tree, DFS +package com.leetcode.medium; + +import com.leetcode.datastructure.TreeNode; + +import java.util.ArrayList; +import java.util.List; + +public class KthSmallestElementInABST230 { + private void inorder(TreeNode node, List res) { + if (node == null) { + return; + } + inorder(node.left, res); + res.add(node.val); + inorder(node.right, res); + } + + /* + Time complexity : O(N) to build a traversal. + Space complexity : O(N) to keep an inorder traversal. + */ + public int kthSmallest(TreeNode root, int k) { + List values = new ArrayList<>(); + inorder(root, values); + return values.get(k - 1); + } +} diff --git a/src/test/java/com/leetcode/medium/KthSmallestElementInABST230Test.java b/src/test/java/com/leetcode/medium/KthSmallestElementInABST230Test.java new file mode 100644 index 0000000..11dc53d --- /dev/null +++ b/src/test/java/com/leetcode/medium/KthSmallestElementInABST230Test.java @@ -0,0 +1,48 @@ +package com.leetcode.medium; + +import com.leetcode.datastructure.TreeNode; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class KthSmallestElementInABST230Test { + private KthSmallestElementInABST230 solution; + + @BeforeEach + public void setUp() { + solution = new KthSmallestElementInABST230(); + } + + @Test + void testKthSmallest_Example1() { + TreeNode root = new TreeNode(3, + new TreeNode(1, null, new TreeNode(2)), + new TreeNode(4)); + + int k = 1; + + int expected = 1; + int result = solution.kthSmallest(root, k); + + assertEquals(expected, result); + } + + @Test + void testKthSmallest_Example2() { + TreeNode root = new TreeNode(5, + new TreeNode(3, + new TreeNode(2, + new TreeNode(1), + null), + new TreeNode(4)), + new TreeNode(6)); + + int k = 3; + + int expected = 3; + int result = solution.kthSmallest(root, k); + + assertEquals(expected, result); + } +} From 374cd46603411e8e5b2f3fe5631333b956b6b23f Mon Sep 17 00:00:00 2001 From: Peter Chen Date: Sat, 1 Nov 2025 11:15:36 +0800 Subject: [PATCH 2/2] Remove public modifier from setUp method in KthSmallestElementInABST230Test. --- .../com/leetcode/medium/KthSmallestElementInABST230Test.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/leetcode/medium/KthSmallestElementInABST230Test.java b/src/test/java/com/leetcode/medium/KthSmallestElementInABST230Test.java index 11dc53d..9ac42c2 100644 --- a/src/test/java/com/leetcode/medium/KthSmallestElementInABST230Test.java +++ b/src/test/java/com/leetcode/medium/KthSmallestElementInABST230Test.java @@ -10,7 +10,7 @@ public class KthSmallestElementInABST230Test { private KthSmallestElementInABST230 solution; @BeforeEach - public void setUp() { + void setUp() { solution = new KthSmallestElementInABST230(); }