Given A binary search tree, write a function to kthSmallest find thek-th smallest element in it.
Note:
You may assume k are always valid, 1≤k≤bst's total elements.
Follow up:
What if the BST are modified (Insert/delete operations) often and you need to find the kth smallest frequently? How would optimize the Kthsmallest routine?
In binary search tree species, find the K element.
The algorithm is as follows:
1. Count left subtree elements.
2, left+1 = k, the root node is the K element
Left >=k, the first k element is
Left +1 <k, it is converted to the right subtree, looking for the k-left-1 element.
The code is as follows:
Class Solution {Public:int calctreesize (treenode* root) {if (root = NULL) return 0;return 1+calctreesize (root->left) + Calctreesize (root->right);} int kthsmallest (treenode* root, int k) {if (root = NULL) return 0;int leftsize = Calctreesize (Root->left); if (k = = Left size+1) {return root->val;} else if (leftsize >= k) {return kthsmallest (root->left,k);} Else{return kthsmallest (Root->right, k-leftsize-1);}};
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Leetcode 230:kth Smallest Element in a BST