To generate potential nodes for the root, first each numerical feature is ordered lowest to highest. The average based off the current row and the row below is also calculated.

AgeHeightAverage for AgeAverage for Height
51007.5125
1015015175
20200--

Then each root can be generated like so:

flowchart TD A[Age < 7.5\nGini impurity: 0.32] A --> |True| B[Loves the song] A --> |False| C[Deos not love the song]
flowchart TD A[Age < 15\nGini impurity: 0.2] A --> |True| B[Loves the song] A --> |False| C[Deos not love the song]
flowchart TD A[Height < 125\nGini impurity: 0.48] A --> |True| B[Loves the song] A --> |False| C[Deos not love the song]
flowchart TD A[Height < 175\nGini impurity: 0.41] A --> |True| B[Loves the song] A --> |False| C[Deos not love the song]

The root with the lowest gini impurity can then be selected. In this case, it would be age < 15.

References