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