One way to do this might be to simply recreate the mesh you want.
It's not clear from your question exactly what you plan to do, but you might find this approach helpful:
Here I simply scale the triangle by a factor of $0.5$, and instantiate it at its own points.
The missing piece in the middle is scaled by the same factor, but additionally rotated by $180°$.
Finally, I merge the pieces back together with
Merge by Distance.
If you want to create multiple subdivision levels, just put the nodes into a group and cascade them.
Update 1, here's what you're looking for....
If you really want the whole thing to be completely procedural, and keep the subdivision dynamic, then it gets a little more complicated.
It took me a while to figure out the structure too, but you can solve the problem with this:
The principle is the same as what I do in the example above, but a little more mature.
First, I duplicate the triangle and scale the individual duplicates according to the desired resolution, so that its vertices make the centers of the triangles in each row.
Then I filter out the triangles I don't need, and convert the remaining ones into curves, so that by resampling them I get a corresponding number of points for the triangles in between.
Finally, I apply only a few logic nodes to get a correct alignment of the smaller triangles.
Update 2, now it's really getting crazy....
Dear Robin, Node-Challenge accepted:
The same principle I use in the above examples can be taken even further and adapted for any mesh.
By not instantiating the original geometry as before, but simply using triangles and moving and scaling their positions, they can be placed directly in the required positions:
Please forgive me for not having time to clean up and document the node tree this time ...there's still room for improvement. But I think the idea should be clear.