https://leetcode.com/problems/kth-smallest-element-in-a-bst/

1. Use inorder traverse:

  1. //20 ms 24.3 MB
  2. /**
  3. * Definition for a binary tree node.
  4. * struct TreeNode {
  5. * int val;
  6. * TreeNode *left;
  7. * TreeNode *right;
  8. * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
  9. * };
  10. */
  11. class Solution {
  12. public:
  13. int kthSmallest(TreeNode* root, int k) {
  14. return inorder(root, k);
  15. }
  16. private:
  17. int inorder(TreeNode* root, int& k) {
  18. if(!root) return -1;
  19. int x = inorder(root->left, k);
  20. if (k == 0) return x;
  21. k--;
  22. if (k == 0) return root->val;
  23. return inorder(root->right, k);
  24. }
  25. };