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.
问题:找出二叉搜索树种第 k 小的元素。
一个深度遍历的应用。使用递归、或者借助栈都可以实现深度遍历。本文代码使用递归实现。
1 void visit(TreeNode* node){ 2 3 if (node->left != NULL){ 4 visit(node->left); 5 } 6 7 if (cnt == 0) { 8 return; 9 } 10 11 cnt--; 12 if(cnt == 0){ 13 res = node->val; 14 return ; 15 } 16 17 if(node->right != NULL){ 18 visit(node->right); 19 } 20 } 21 22 int cnt; 23 int res; 24 25 int kthSmallest(TreeNode* root, int k) { 26 cnt = k; 27 if(root == NULL){ 28 return 0; 29 } 30 visit(root); 31 32 return (cnt == 0) ? res : 0; 33 }
[LeetCode] 230. Kth Smallest Element in a BST 解题思路
原文:http://www.cnblogs.com/TonyYPZhang/p/5117874.html