+ t.levels[level] = index
+
+ return index, nil
+}
+
+// Built tells if the node (l, i) is built.
+func (t *Tree) Built(level, index int) (bool, error) {
+ _, built, err := t.place(level, index)
+ return built, err
+}
+
+// place returns the position of the node (l, i) if it is built.
+func (t *Tree) place(level, index int) (Position, bool, error) {
+ if level < 0 || level >= bits.UintSize-2 || index < 0 {
+ return Position{}, false, nil
+ }
+
+ records, err := t.level(level)
+ if err != nil {
+ return Position{}, false, err
+ }
+
+ record, found, err := records.Read(index)
+ if err != nil || !found {
+ return Position{}, false, err
+ }
+
+ place := decodePosition(record)
+
+ return place, place.length > 0, nil