diff --git a/src/main/java/leetcode/editor/cn/KthSmallestElementInABst.java b/src/main/java/leetcode/editor/cn/KthSmallestElementInABst.java new file mode 100644 index 0000000..9d4be98 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/KthSmallestElementInABst.java @@ -0,0 +1,88 @@ +//给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 +// +// +// +// 示例 1: +// +// +//输入:root = [3,1,4,null,2], k = 1 +//输出:1 +// +// +// 示例 2: +// +// +//输入:root = [5,3,6,2,4,null,null,1], k = 3 +//输出:3 +// +// +// +// +// +// +// 提示: +// +// +// 树中的节点数为 n 。 +// 1 <= k <= n <= 104 +// 0 <= Node.val <= 104 +// +// +// +// +// 进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法? +// Related Topics 树 二分查找 +// 👍 397 👎 0 + +package leetcode.editor.cn; + +import com.code.leet.entiy.TreeNode; + +import java.util.ArrayList; +import java.util.List; + +//230:二叉搜索树中第K小的元素 +public class KthSmallestElementInABst { + public static void main(String[] args) { + //测试代码 + Solution solution = new KthSmallestElementInABst().new Solution(); + } + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) + + /** + * 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 int kthSmallest(TreeNode root, int k) { + List nums = getList(root, new ArrayList<>()); + return nums.get(k - 1); + } + + private List getList(TreeNode root, List list) { + if (root == null) { + return list; + } + getList(root.left, list); + list.add(root.val); + getList(root.right, list); + + return list; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/KthSmallestElementInABst.md b/src/main/java/leetcode/editor/cn/KthSmallestElementInABst.md new file mode 100644 index 0000000..17d648a --- /dev/null +++ b/src/main/java/leetcode/editor/cn/KthSmallestElementInABst.md @@ -0,0 +1,34 @@ +

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

+ +

 

+ +

示例 1:

+ +
+输入:root = [3,1,4,null,2], k = 1
+输出:1
+
+ +

示例 2:

+ +
+输入:root = [5,3,6,2,4,null,null,1], k = 3
+输出:3
+
+ +

 

+ +

 

+ +

提示:

+ +
    +
  • 树中的节点数为 n
  • +
  • 1 <= k <= n <= 104
  • +
  • 0 <= Node.val <= 104
  • +
+ +

 

+ +

进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法?

+
Related Topics
  • 二分查找
  • \n
  • 👍 397
  • 👎 0
  • \ No newline at end of file