在書中算法導論 - 創造性的方法,問題4.24:證明的最大轉數爲兩棵樹成爲等於
設T1和T2是兩個任意的樹,每個都具有n個節點。證明對T1應用至多2n的旋轉是足夠的,以便它等於T2。
對於二叉搜索樹,我想通了一個算法:
查找等於T2的根元素,讓我們把它定位根。
使用AVL旋轉策略,旋轉target-root使其成爲T1的新根。
在此過程中,可能會執行多次旋轉。對於T1和T2的左子樹,按照上面的方式遞歸處理它們。
對於T1和T2的右子樹,按遞歸方式處理它們。
該算法在最壞的情況下以O(N^2)運行。
我不太明白「任意樹」這個詞,我不知道如何讓T1等於T2。
任何人都可以幫助解決這個問題嗎?
我不知道有沒有簡單的答案。我認爲這篇論文是一個很好的起點。 Daniel Sleator,Robert Tarjan和William Thurston指出,任何兩棵n節點樹(n≥11)之間的旋轉距離至多爲2n-6,並且無限多對樹相距甚遠。 http://www.ams.org/journals/jams/1988-01-03/S0894-0347-1988-0928904-4/home.html – amald
@amald謝謝,我將閱讀文件 – Guocheng