# Find kth Smallest Element in a Binary Search Tree

A binary search tree is a hierarchical data structure where each node comprises two child nodes which in turn satisfies the property that the value of every node in the left subtree is supposed to be less than the parent node and that the value in the right subtree should be greater than the parent node. As the kth smallest element refers to an element that, when visiting a binary tree in an in-order traversal pattern, we have to stop, wait, and search for the kth element in the tree and return the result.

Some advantages are: -

1. Efficient search- binary search trees are known for their vigorous report in search operations, and the smallest element is no exception.
2. Sorted order- the kth smallest element operation represents the elements in a kth smallest sorted order, which is very helpful, especially when looking for the elements to be presented in an organized manner.

In this article, we are going to see and find out the kth smallest element in a binary search tree. Suppose we are given a binary tree and K as an input, and we must find out the smallest element. This article will show the code solution to the following problem.

### Implementation

Output

A step-by-step explanation of the code

1. The code begins by including the necessary header files for the program's various input and output operations.
2. Next, we define a structure 'Node' to represent a node in the binary search tree, and it has the following three members: a data value and a pointer to the left and right child.
3. Then we create an insert function to insert a new key to the BST. It takes two parameters: a root value and the value that should be inserted.
4. The 'count' variable is declared outside any function and is subjected to 0.
5. Now, we move to the central part and create the 'KthSmallest' function, a recursive function used to find out the Kth smallest element in the binary tree and holds the main logic of the program.
6. Next, the 'printKthSmallest' function is used to print the result, take the value of k as parameters, and display the results.
7. The main function is the entry point of the program. A binary tree is created in it, and the root of the BST is initialized to NULL.
8. Using a loop, we can take each value from the key and move it to the binary tree using the insert function.
9. The 'printKthSmallest' function is called with the root of the BST to display the result.
10. Finally, the main program returns 0, indicating the successful execution of the program.

### Example 2)

Output

A step-by-step explanation of the code

1. The code begins by including the necessary header files for the program's various input and output operations.
2. Next, we define a structure 'Node' to represent a node in the binary search tree, and it has the following three members: a data value and a pointer to the left and right child.
3. Then we create an insert function to insert a new key to the BST. It takes two parameters: a root value and the value that should be inserted.
4. The 'count' variable is declared outside any function and is subjected to 0.
5. Now, we move to the central part and create the 'KthSmallest' function, a recursive function used to find out the Kth smallest element in the binary tree and holds the main logic of the program.
6. Next, the 'printKthSmallest' function is used to print the result, take the value of k as parameters, and display the results.
7. The primary function is the entry point of the program. A binary tree is created in it, and the root of the BST is initialized to NULL.
8. Using a loop, we can take each value from the key and move it to the binary tree using the insert function.
9. The 'printKthSmallest' function is called with the root of the BST to display the result.
10. Finally, the main program returns 0, indicating the successful execution of the program.

### Example 3)

Output

A step-by-step explanation of the code

1. The code begins by including the 'java.io' package.
2. Next, we define a structure 'Node' to represent a node in the binary search tree, and it has the following three members: a data value and a pointer to the left and right child.
3. We define a nested class called 'TPT' that contains the logic of the program.
4. Then we create an insert function to insert a new key to the BST. It takes two parameters: a root value and the value that should be inserted.
5. The 'count' variable is declared outside any function and is subjected to 0.
6. Now, we move to the central part and create the 'KthSmallest' function, a recursive function used to find out the Kth smallest element in the binary tree and holds the main logic of the program.
7. Next, the 'printKthSmallest' function is used to print the result, take the value of k as parameters, and display the results.
8. The primary function is the entry point of the program. A binary tree is created in it, and the root of the BST is initialized to NULL.
9. Using a loop, we can take each value from the key and move it to the binary tree using the insert function.
10. The 'printKthSmallest' function is called with the root of the BST to display the result.
11. Finally, the main program returns 0, indicating the successful execution of the program.