Go语言实现:【剑指offer】二叉搜索树的第k个的结点
该题目来源于牛客网《剑指offer》专题。
给定一棵二叉搜索树,请找出其中的第k小的结点。例如,(5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
Go语言实现:
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
var index = 0
func kNode(root *TreeNode, k int) *TreeNode {
if root != nil {
node := kNode(root.Left, k)
if node != nil {
return node
}
index++
if index == k {
return root
}
node = kNode(root.Right, k)
if node != nil {
return node
}
}
return nil
}