pkg/adt/interval_tree.go
func (x *intervalNode) successor() *intervalNode {
	if x.right != nil {
		return x.right.min()
	}
	y := x.parent
	for y != nil && x == y.right {
		x = y
		y = y.parent
	}
	return y
}
func (x *intervalNode) successor() *intervalNode {
	if x.right != nil {
		return x.right.min()
	}
	y := x.parent
	for y != nil && x == y.right {
		x = y
		y = y.parent
	}
	return y
}
func ( x * intervalNode ) successor ( ) * intervalNode { if x . right != nil { return x . right . min ( ) } y := x . parent for y != nil && x == y . right { x = y y = y . parent } return y }
// successor is the next in-order node in the tree
successor is the next in - order node in the tree