Given a binary search tree, write a function kthSmallest
to find the kth smallest element in it.
找二叉搜索树中第k个小的值。
用中序遍历,增加一个全局变量记录访问到第几个节点,返回访问的第k个节点的值。
1 class Solution { 2 private: 3 int cnt; 4 int ans; 5 public: 6 int ldr(TreeNode* root, int k) { 7 if (root) { 8 ans = ldr(root->left, k); 9 if (k==cnt) 10 return ans; 11 ans = root->val; 12 ++cnt; 13 if (k==cnt) 14 return ans; 15 ans = ldr(root->right, k); 16 if (k==cnt) 17 return ans; 18 } 19 return 0; 20 } 21 int kthSmallest(TreeNode* root, int k) { 22 cnt = 0; 23 ans = 0; 24 ldr(root, k); 25 return ans; 26 }