RedBlackTree: Iterators become invalid after removing an element.
Author: 981377660LMTCreated Mar 21, 2023Updated Mar 1, 2026
package main
import (
"fmt"
"github.com/emirpasic/gods/trees/redblacktree"
)
func main() {
tree := redblacktree.NewWithIntComparator()
tree.Put(1, struct{}{})
tree.Put(2, struct{}{})
tree.Put(3, struct{}{})
it1 := tree.Iterator()
it2 := tree.Iterator()
it1.Next()
it2.Next()
it2.Next()
fmt.Println(it1.Key()) // 1
tree.Remove(2)
fmt.Println(it1.Key()) // 1
it1.Next()
fmt.Println(it1.Key())
// need to be 3 here
// panic: runtime error: invalid memory address or nil pointer dereference
}I think that after removing an element, the iterators of the other elements need to be unaffected.
Source: emirpasic/gods