Given a binary search tree, write a function kthSmallest
to find the kth smallest element in it.
Note:
You may assume k is always valid, 1 ≤ k ≤ BST's total elements.Example 1:
Input: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2Output: 1
Example 2:
Input: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1Output: 3
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */10 public class Solution {11 public int kthSmallest(TreeNode root, int k) {12 int[] arr = new int[2];13 helper(root, arr, k);14 return arr[1];15 }16 17 public void helper(TreeNode root, int[] arr, int k) {18 if (root != null) {19 helper(root.left, arr, k);20 arr[0]++;21 if (arr[0] == k) {22 arr[1] = root.val;23 return;24 }25 helper(root.right, arr, k);26 }27 }28 }