Java架构师成长直通车(40周完结无密)
超清原画 完整无密download:http://www.51xuebc.com/thread-134-1-1.html
import com.kaesar.leetcode.TreeNode;
import java.util.ArrayList;
import java.util.List;
public class LeetCode_230 {
public static int kthSmallest(TreeNode root, int k) {
// 如果二叉树为空,说明没有第K小的节点,直接返回空
if (root == null) {
return -1;
}
List<Integer> values = new ArrayList<>();
// 中序遍历得到二叉搜索树的所有节点,是按顺序的
inOrder(root, values);
// 如果k大于二叉树的节点数,说明不存在第K小的节点,直接返回空
if (k > values.size()) {
return -1;
}
// 返回第K小的节点
return values.get(k - 1);
}
/**
* 二叉树的中序遍历
*
* @param root
* @param values
*/
private static void inOrder(TreeNode root, List<Integer> values) {
if (root.left != null) {
inOrder(root.left, values);
}
values.add(root.val);
if (root.right != null) {
inOrder(root.right, values);
}
}