扯犊子:我不乐意利用空间写这种树的遍历,尤其是后续遍历。有兴趣的可以考虑一下二叉查找树的性质进行寻找第k个最小值。
题意:在二叉树中寻找最小的第K个元素。
思路:我遍历了二叉树,将所有的数据存放到集合中,然后排序,直接利用集合的get()方法就取出来数了。
public int kthSmallest(TreeNode root, int k) {
if (root == null)
return 0;
List<Integer> list = new ArrayList<Integer>();
getList(root, list);
//排序
Collections.sort(list);
//取结果,题意是结果一定会存在,所以直接取就行了
return list.get(k - 1);
}
//遍历二叉树,将数据存放到集合中
public void getList(TreeNode root, List<Integer> list) {
if (root == null)
return;
list.add(root.val);
getList(root.left, list);
getList(root.right, list);
}