From b674a21e37402315bca36257cf4dbec2ec69ffa5 Mon Sep 17 00:00:00 2001 From: hiteshskp <51043123+hiteshskp@users.noreply.github.com> Date: Sun, 27 Apr 2025 23:38:12 +0530 Subject: [PATCH] Update kth-smallest-element-in-a-bst.py Solution 3 based on inorder traversal --- Python/kth-smallest-element-in-a-bst.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Python/kth-smallest-element-in-a-bst.py b/Python/kth-smallest-element-in-a-bst.py index ea4b10afb7..0af4047dbe 100644 --- a/Python/kth-smallest-element-in-a-bst.py +++ b/Python/kth-smallest-element-in-a-bst.py @@ -46,3 +46,27 @@ def gen_inorder(root): yield n return next(islice(gen_inorder(root), k-1, k)) + +# time: O(h) +# space: O(h) +class Solution3(object): + def kthSmallest(self, root: Optional[TreeNode], k: int) -> int: + # This list will store the inorder traversal + inorder_nodes = [] + + # Helper function to perform inorder traversal + def inorder(node): + if not node: + return + # Visit left subtree + inorder(node.left) + # Visit current node + inorder_nodes.append(node.val) + # Visit right subtree + inorder(node.right) + + # Perform inorder traversal starting from root + inorder(root) + + # kth smallest is the (k-1)th element in 0-indexed list + return inorder_nodes[k - 1]