看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Achen2211 (阿辰)》之銘言: : 如何陣列表示出分支度為d的完整樹上(d>1),位置i的節點,他的父和子位置公式是怎導 : 出啊? : 我是畫圖出來root為1開始編號,然後第二層2~d+1,第三層d+2~2d+1,這樣下去.... : 請問公式要怎導出= =?? 哦哦哦,看到一棵完整樹,意思應該是指樹裡面的節點盡量塞得緊緊的, 除了在最後一株非葉節點子樹中填不滿之外,其他的非葉節點子樹都是滿滿的. 這時就可以用前一題的知識,要先會算任何一層的最多節點數. 一棵完整樹分支度 d, 問位置 i, 可以先算位置 i 是高度多少. 假設高度 h, 則可以再算出一個序列代表每一層最多的節點數: c[h] = {1, d, d^2, d^3, ... , d^(h-2), d^(h-1)} 先要看所指定位置 i 的節點,位於第 h 層,可以對應到 h-1 層的哪個節點. 先算出 k_h = i - sigma_{j=1..h-1}(d^(j-1)) 是指定節點在第 h 層的第 k_h 節點. 照理說是對應在 k_{h-1} = ceiling(k_h / d), 表示指定節點的父節點在第 h-1 層 的第 k_{h-1} 節點. 接著可以算出 k_{h-2} = ceiling(k_{h-1} / d) ... 等等. 條理大概是這樣. 數值上可能有估不準,請見諒. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.214.133
Achen2211:求父節點不是應該用floor嗎??? 06/03 15:53