力扣:230. 二叉搜索树中第K小的元素

This commit is contained in:
huangge1199 2021-02-05 13:15:08 +08:00
parent b1b6574de4
commit a22185ce4c
2 changed files with 52 additions and 0 deletions

View File

@ -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<TreeNode> stack = new LinkedList<TreeNode>();
while (true) {
while (root != null) {
stack.add(root);
root = root.left;
}
root = stack.removeLast();
if (--k == 0) return root.val;
root = root.right;
}
}
}

View File

@ -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<Integer> nums = getList(root, new ArrayList<>());
return nums.get(k - 1);
}
private List<Integer> getList(TreeNode root, List<Integer> list) {
if(root==null){
return list;
}
getList(root.left,list);
list.add(root.val);
getList(root.right,list);
return list;
}
}