1. Full Inorder Array Collection
Intuition
Traverse the entire BST using inorder DFS, appending each visited node's value into a list. Return the element at index k - 1.
When to apply: Simple baseline approach when memory is unrestricted.
Algorithm
- Collect all elements in an array via recursive inorder DFS and return index k - 1.
#include <iostream>#include <vector> struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}}; class Solution { void inorder(TreeNode* root, std::vector<int>& vals) { if (!root) return; inorder(root->left, vals); vals.push_back(root->val); inorder(root->right, vals); }public: int kthSmallest(TreeNode* root, int k) { std::vector<int> vals; inorder(root, vals); return vals[k - 1]; }}; int main() { TreeNode* root = new TreeNode(5); root->left = new TreeNode(3); root->right = new TreeNode(6); root->left->left = new TreeNode(2); root->left->right = new TreeNode(4); root->left->left->left = new TreeNode(1); Solution sol; std::cout << "3rd smallest: " << sol.kthSmallest(root, 3) << std::endl; return 0;}Time & Space Complexity
- Time complexity:
O(N) - Space complexity:
O(N)