Balanced data tree structures

I am trying to understand data trees a little better in Grasshopper and I have a few questions:

  1. Is there a requirement on trees to be perfectly balanced, as in each subtree needs to be exactly the same?
  2. Does that also apply to the list at the top level? If not, how does that work with grafting

All the example drawings I am finding is the tree itself is perfectly balanced
but not the last level necessarily

In the example below, we can call it technically “balanced” in the sense of the graph theory word (all data points are spread to be at the lowest possible level). At the level 3 not all subgraphs have the same number of branches.

Now, is it possible to have it unbalanced, as in to have the actual data points (red part) at various levels of the tree?

A tree does not need to be balanced and I’d like to say at least in my work I rarely see balanced trees:

Data can also be on multiple levels: