github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/algorithm/datastructures/tree/segmenttree/segmentTree_test.go (about) 1 package segmenttree 2 3 import ( 4 "fmt" 5 "testing" 6 ) 7 8 func TestNewSegmentTree(t *testing.T) { 9 d := []int{-2, 0, 3, -5, 2, -1} 10 11 data := make([]interface{}, 0, len(d)) 12 for _, v := range d { 13 data = append(data, v) 14 } 15 tree := NewSegmentTree(data, func(l, r interface{}) interface{} { 16 nl := l.(int) 17 nr := r.(int) 18 return max(nl, nr) 19 }) 20 fmt.Println(tree.Query(0, 2)) 21 //fmt.Println(tree) 22 tree.Set(1, 100) 23 fmt.Println("---------------set after-------------") 24 fmt.Println(tree.Query(0, 2)) 25 //fmt.Println(tree) 26 fmt.Println(tree.Query(2, 5)) 27 } 28 29 func max(a, b int) int { 30 if a > b { 31 return a 32 } 33 return b 34 } 35 func TestSegmentTree_Depth(t *testing.T) { 36 for i := 0; i < 20; i++ { 37 fmt.Println(i, depth(i)) 38 } 39 }