forked from sachuverma/DataStructures-Algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathk-th smallest element in BST.cpp
55 lines (46 loc) · 993 Bytes
/
k-th smallest element in BST.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
k-th smallest element in BST
============================
Given a BST and an integer K. Find the Kth Smallest element in the BST.
Example 1:
Input:
2
/ \
1 3
K = 2
Output: 2
Example 2:
Input:
2
/ \
1 3
K = 5
Output: -1
Your Task:
You don't need to read input or print anything. Your task is to complete the function KthSmallestElement() which takes the root of the BST and integer K as inputs and return the Kth smallest element in the BST, if no such element exists return -1.
Expected Time Complexity: O(N).
Expected Auxiliary Space: O(1).
Constraints:
1<=Number of nodes<=100000
*/
int ans = -1;
void inorder(Node *root, int &k)
{
if (k == 0 || !root)
return;
inorder(root->left, k);
k--;
if (k == 0)
{
ans = root->data;
return;
}
inorder(root->right, k);
}
// Return the Kth smallest element in the given BST
int KthSmallestElement(Node *root, int K)
{
//add code here.
inorder(root, K);
return ans;
}