230. Kth Smallest Element in a BST
https://leetcode.com/problems/kth-smallest-element-in-a-bst/
Iterative Solution:
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
cnt = 0
stack = []
curr = root
stack.append(curr)
while stack:
while curr.left:
stack.append(curr.left)
curr = curr.left
node = stack.pop()
cnt+=1
if cnt == k:
return node.val
node = node.right
while node:
stack.append(node)
node = node.left
return -1
Simplified Iterative Solution:
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
cnt = 0
stack = []
curr = root
while True:
while curr:
stack.append(curr)
curr = curr.left
curr = stack.pop()
cnt+=1
if cnt == k:
return curr.val
curr = curr.right
return -1
DFS Solution
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
self.cnt = 0
self.res = -1
def dfs(node):
if node == None:
return
dfs(node.left)
self.cnt+=1
if self.cnt == k:
self.res = node.val
return
dfs(node.right)
dfs(root)
return self.res
Last updated
Was this helpful?