mirror of
https://github.com/TheAlgorithms/C.git
synced 2026-02-12 13:54:31 +00:00
36 lines
701 B
C
36 lines
701 B
C
/**
|
|
* Definition for a binary tree node.
|
|
* struct TreeNode {
|
|
* int val;
|
|
* struct TreeNode *left;
|
|
* struct TreeNode *right;
|
|
* };
|
|
*/
|
|
|
|
struct TreeNode* findKthSmallest(struct TreeNode* node, int* k){
|
|
if (node == NULL){
|
|
return NULL;
|
|
}
|
|
|
|
struct TreeNode* resultNode = findKthSmallest(node->left, k);
|
|
|
|
if (resultNode != NULL){
|
|
return resultNode;
|
|
}
|
|
|
|
*k -= 1;
|
|
|
|
if (*k == 0){
|
|
return node;
|
|
}
|
|
|
|
return findKthSmallest(node->right, k);
|
|
}
|
|
|
|
// Depth-First Search
|
|
// Runtime: O(n)
|
|
// Space: O(1)
|
|
int kthSmallest(struct TreeNode* root, int k){
|
|
return findKthSmallest(root, &k)->val;
|
|
}
|