package main import "fmt" type TreeNode struct { Val int Right *TreeNode Left *TreeNode } var index int func KthNode(proot *TreeNode, k int) int { // write code here res := midTravel(proot, k) if res == nil { return -1 } return res.Val } func midTravel(node *TreeNode, targetPos int) *TreeNode { if node == nil { return nil } if res := midTravel(node.Left, targetPos); res != nil { return res } index += 1 if targetPos == index { return node } if res := midTravel(node.Right, targetPos); res != nil { return res } return nil } func main() { node1 := &TreeNode{Val: 5} node2 := &TreeNode{Val: 3} node3 := &TreeNode{Val: 7} node4 := &TreeNode{Val: 2} node5 := &TreeNode{Val: 4} node6 := &TreeNode{Val: 6} node7 := &TreeNode{Val: 8} node1.Left = node2 node1.Right = node3 node2.Left = node4 node2.Right = node5 node3.Left = node6 node3.Right = node7 k := 3 res := KthNode(node1, k) fmt.Println(res) }