func NextChild(n PrefixNode, bs *cf.Bitstring, depth int) int { if n.IsLeaf() { panic("Cannot dereference child of leaf node") } childIndex := 0 nbq := n.Config().BitQuantum for i := 0; i < nbq; i++ { mask := 1 << uint(i) if bs.Get(depth*nbq+i) == 1 { childIndex |= mask } } return childIndex }
func (t *MemPrefixTree) Node(bs *cf.Bitstring) (PrefixNode, error) { node := t.root nbq := t.BitQuantum for i := 0; i < bs.BitLen() && !node.IsLeaf(); i += nbq { childIndex := 0 for j := 0; j < nbq; j++ { mask := 1 << uint(j) if bs.Get(i+j) == 1 { childIndex |= mask } } node = node.children[childIndex] } return node, nil }