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  }