题目
题目链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/
题目解析:通过遍历整棵二叉搜索树(二叉搜索树特点,左子树一定比根节点小,右子树一定比根节点大),将结点的值按从小到大放入ArrayList集合中,在找到k-1的值就是第k个最小的值
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
//遍历函数
public ArrayList<Integer> find(TreeNode root, ArrayList<Integer> ans) {
//如果结点为空就返回
if (root == null) return ans;
//遍历左子树
find(root.left, ans);
//将当前的值放入集合中
ans.add(root.val);
//遍历右子树
find(root.right, ans);
return ans;
}
public int kthSmallest(TreeNode root, int k) {
ArrayList<Integer> list = find(root, new ArrayList<Integer>());
return list.get(k - 1);
}
}