MCPcopy
hub / github.com/google/mangle / insert

Method insert

factstore/interval_tree.go:60–83  ·  view source on GitHub ↗

insert recursively inserts an interval and rebalances.

(node *treeNode, interval ast.Interval)

Source from the content-addressed store, hash-verified

58
59// insert recursively inserts an interval and rebalances.
60func (t *IntervalTree) insert(node *treeNode, interval ast.Interval) *treeNode {
61 if node == nil {
62 return &treeNode{
63 interval: interval,
64 maxEnd: GetEndTime(interval),
65 height: 1,
66 }
67 }
68
69 start := GetStartTime(interval)
70 nodeStart := GetStartTime(node.interval)
71
72 if start < nodeStart {
73 node.left = t.insert(node.left, interval)
74 } else {
75 node.right = t.insert(node.right, interval)
76 }
77
78 // Update max end
79 node.maxEnd = maxInt(node.maxEnd, GetEndTime(interval))
80
81 // Rebalance
82 return t.rebalance(node)
83}
84
85// contains checks if an exact interval exists in the tree.
86func (t *IntervalTree) contains(interval ast.Interval) bool {

Callers 1

InsertMethod · 0.95

Calls 4

rebalanceMethod · 0.95
GetEndTimeFunction · 0.85
GetStartTimeFunction · 0.85
maxIntFunction · 0.85

Tested by

no test coverage detected