From a22185ce4c173bfa78d22a5ef1cbfd59857ef858 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Fri, 5 Feb 2021 13:15:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9B=E6=89=A3=EF=BC=9A230.=20=E4=BA=8C?= =?UTF-8?q?=E5=8F=89=E6=90=9C=E7=B4=A2=E6=A0=91=E4=B8=AD=E7=AC=ACK?= =?UTF-8?q?=E5=B0=8F=E7=9A=84=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leet/Official/t20210204/KthSmallest.java | 27 +++++++++++++++++++ .../leet/study/t20210204/KthSmallest.java | 25 +++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 LeetCode/src/main/java/com/code/leet/Official/t20210204/KthSmallest.java create mode 100644 LeetCode/src/main/java/com/code/leet/study/t20210204/KthSmallest.java diff --git a/LeetCode/src/main/java/com/code/leet/Official/t20210204/KthSmallest.java b/LeetCode/src/main/java/com/code/leet/Official/t20210204/KthSmallest.java new file mode 100644 index 0000000..ae2af27 --- /dev/null +++ b/LeetCode/src/main/java/com/code/leet/Official/t20210204/KthSmallest.java @@ -0,0 +1,27 @@ +package com.code.leet.Official.t20210204; + +import com.code.leet.entiy.TreeNode; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +/** + * 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 + */ +public class KthSmallest { + + public int kthSmallest(TreeNode root, int k) { + LinkedList stack = new LinkedList(); + + while (true) { + while (root != null) { + stack.add(root); + root = root.left; + } + root = stack.removeLast(); + if (--k == 0) return root.val; + root = root.right; + } + } +} diff --git a/LeetCode/src/main/java/com/code/leet/study/t20210204/KthSmallest.java b/LeetCode/src/main/java/com/code/leet/study/t20210204/KthSmallest.java new file mode 100644 index 0000000..ded69de --- /dev/null +++ b/LeetCode/src/main/java/com/code/leet/study/t20210204/KthSmallest.java @@ -0,0 +1,25 @@ +package com.code.leet.study.t20210204; + +import com.code.leet.entiy.TreeNode; + +import java.util.ArrayList; +import java.util.List; + +public class KthSmallest { + + 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; + } +}