lc-go/solutions/2/q230/solution.go

36 lines
634 B
Go

// Package q230 implements a solution for https://leetcode.com/problems/kth-smallest-element-in-a-bst/
package q230
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func findKth(node *TreeNode, k, current int) (int, *int) {
if node == nil {
return current, nil
}
current, ret := findKth(node.Left, k, current)
if ret != nil {
return current, ret
}
current += 1
if current == k {
return current, &node.Val
}
return findKth(node.Right, k, current)
}
func kthSmallest(root *TreeNode, k int) int {
_, kth := findKth(root, k, 0)
if kth == nil {
return 0
}
return *kth
}
var _ = kthSmallest