力扣: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