我們得到一棵大小爲N
的平衡樹,意思是對於樹中的每個節點,如果以該節點爲根的子樹的大小爲n
和k
,則其k個子樹的大小爲Omega(n/k)
。我們還在飛機上給出了N
點,沒有三個是共線的。我們試圖在樹中的節點之間找到一個雙射點,並在平面上指向,以便在平面上繪製樹不會導致任何邊緣交叉。 k
是Theta(1)
,並且可以是不同的每個節點。將平衡樹映射到平面上的點
我試圖找到解決這個遞歸的解決方案,但都無濟於事,因爲我不知道怎麼才能保證無交叉的要求。目標運行時是O(n log^2 n)
,所以形式T(n)=k*T(n/k) + O(n log n)
復發將導致這一點,所以我想沿着這些線路的想法。我要通過x-coord對點進行排序,找到中值,然後將其餘點分成塊並遞歸求解。但是我已經繪製出讓解決方案失敗的測試用例。任何幫助?