折りたたみ可能なツリー レイアウトの例hereに基づいて、d3 を使用したツリー ベースのレイアウトがあります。
デモでわかるように、ノード間の垂直方向の間隔はツリーの各レベルで一定です。つまり、多くの余白を残しながらノードを束ねることができます。
代わりに、各レベルが使用可能なすべての垂直方向のスペースを占めるようにしたいと考えています。たとえば、2 つの子ノードを持つレベルではノードの間隔が 0% と 100% になり、3 つの子ノードの間隔は 0%、50%、100% になります。
うまくいけば、これは可能です!