| 
				
					 | 
			5 年之前 | |
|---|---|---|
| .. | ||
| BUILD | 5 年之前 | |
| README.md | 5 年之前 | |
| doc.go | 5 年之前 | |
| interval_tree.go | 5 年之前 | |
"Introduction to Algorithms" (Cormen et al, 3rd ed.), Chapter 13
For example,
import (
    "fmt"
    "go.etcd.io/etcd/pkg/adt"
)
func main() {
    ivt := adt.NewIntervalTree()
    ivt.Insert(NewInt64Interval(510, 511), 0)
    ivt.Insert(NewInt64Interval(82, 83), 0)
    ivt.Insert(NewInt64Interval(830, 831), 0)
    ...
After inserting the values 510, 82, 830, 11, 383, 647, 899, 261, 410, 514, 815, 888, 972, 238, 292, 953.
Deleting the node 514 should not trigger any rebalancing:
Deleting the node 11 triggers multiple rotates for rebalancing:
Try yourself at https://www.cs.usfca.edu/~galles/visualization/RedBlack.html.