剑指 Offer 54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点。
//go 迭代;时空都是:平衡时:O(logN+K); 不平衡时:O(N+K)
func kthLargest(root *TreeNode, k int) int {
queue := []*TreeNode{}
for root != nil || len(queue) > 0 {
n := len(queue)
if root != nil {
queue = append(queue, root)
root = root.Right
} else {
node := queue[n-1]
queue = queue[:n-1]
k--
if k == 0 {
return node.Val
}
root = node.Left
}
}
return 0
}