230. Kth Smallest Element in a BST

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     }

 

posted @ 2017-12-19 21:25  Zzz...y  阅读(169)  评论(0编辑  收藏  举报