题目:
分析:因为二叉搜索树的中序遍历是递增的这一特性,可以先得到该二叉搜索树的中序遍历序列,然后直接返回第k个元素即可。
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: the given BST * @param k: the given k * @return: the kth smallest element in BST */ public int kthSmallest(TreeNode root, int k) { // write your code here List<Integer> list=new ArrayList<>(); inOrderTraval(list,root); return list.get(k-1); } public void inOrderTraval(List<Integer> list,TreeNode root){ if(root.left!=null){ inOrderTraval(list,root.left); } list.add(root.val); if(root.right!=null){ inOrderTraval(list,root.right); } } }