#223·gods

RedBlackTree: Iterators become invalid after removing an element.

Author: 981377660LMTCreated Mar 21, 2023Updated Mar 1, 2026
go
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.