diff --git a/go/230-Kth-Smallest-Element-in-a-BST.go b/go/230-Kth-Smallest-Element-in-a-BST.go new file mode 100644 index 000000000..e46393efa --- /dev/null +++ b/go/230-Kth-Smallest-Element-in-a-BST.go @@ -0,0 +1,22 @@ +func kthSmallest(root *TreeNode, k int) int { + stack := make([]*TreeNode, 0, k) + + for { + for root != nil { + stack = append(stack, root) + root = root.Left + } + + root = stack[len(stack) - 1] + stack = stack[:len(stack) - 1] + + k-- + if k == 0 { + return root.Val + } + + root = root.Right + } + + return -1 +}