力扣:230. 二叉搜索树中第K小的元素
This commit is contained in:
parent
b1b6574de4
commit
a22185ce4c
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user