public DataTreeNode parent() {
    Preconditions.checkArgument(mask > 0);
    long parentMask = mask - 1 >> 1;
    long parentIndex;
    if (index > parentMask) {
      parentIndex = index - parentMask - 1;
    } else {
      parentIndex = index;
    }
    return DataTreeNode.of(parentMask, parentIndex);
  }
Tree node which data shuffle into, consist of two parts.

<ul>
  <li>mask: mask code representing the height of tree, validate value:2^n-1(n representing the
      height of tree)
  <li>index: index of tree node(starting from 0)
</ul>

<p>index = hashCode(data) & mask;
amoro-format-iceberg/src/main/java/org/apache/amoro/data/DataTreeNode.java