⭐Kth Smallest Element in Tree

Get all nodes and traverse

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
vector<int> nodes;

void getNodes(TreeNode *root) {
    if(!root) return;
    
    getNodes(root->left);
    nodes.push_back(root->val);
    getNodes(root->right);
}

int Solution::kthsmallest(TreeNode* A, int B) {
    nodes.clear();
    getNodes(A);
    sort(nodes.begin(), nodes.end());
    return nodes[B - 1];
}

Time Complexity: O(nlog⁑n)O(n\log n)​

Space Complexity: O(n)O(n)​

Creating an inorder array though traversal

Space Complexity: O(n)O(n)

Time Complexity: O(n)O(n)

Using Recursive Traversal and a counter

Time Complexity: O(n)O(n)​

Space Complexity: O(n)O(n)​ for the stack

Using Morris Traversal

Time Complexity: O(k)O(k)​

Space Complexity: O(1)O(1)​

Last updated