LeetCode 230. Kth Smallest Element in a BST
1 class Solution { 2 public: 3 int rank; 4 int result; 5 6 void help(TreeNode* root, int k){ 7 if(!root) return; 8 9 help(root->left, k); 10 if(++rank == k){ 11 result = root->val; 12 return; 13 } 14 help(root->right, k); 15 } 16 int kthSmallest(TreeNode* root, int k) { 17 rank = 0; 18 help(root, k); 19 return result; 20 } 21 };
rank即为当前root在整棵树中的顺序,表示当前root->val为第rank小的数(是指++rank后的rank)。
还有用stack实现的算法,未细看,留个坑。
hint里的未优化,留坑。