230. Kth Smallest Element in a BSTs 题目大意: 给定一个二叉搜索树,找出第k个最小的元素。 解题思路: 根据二叉搜索树的特性,左子树小于根节点小于右子树。我们可以对二叉树进行中序遍历(Inorder Traverse)并将元素保存在一个ArrayList当中。 第k个最小的元素也就是在ArrayList中index为k-1的元素 中序遍历:left -> root -> right 复杂度: Time Complexity: O(N) Space Complexity: O(N) Code示例: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public int kthSmallest(TreeNode root, int k) { List<Integer> nums = inorder(root, new ArrayList<>()); return nums.get(k-1); } public List<Integer> inorder (TreeNode root, List<Integer> list) { if (root == null) return list; inorder(root.left, list); list.add(root.val); inorder(root.right, list); return list; } }