/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func kthSmallest(root *TreeNode, k int) (val int) {
	traversalKth(root, &k, &val)
	return
}

func traversalKth(node *TreeNode, k *int, val *int) {
	if node == nil {
		return
	}
	traversalKth(node.Left, k, val)
	(*k)--
	if *k == 0 {
		*val = node.Val
		return
	}
	traversalKth(node.Right, k, val)
}