[英]How do I return the children of recursive nodes in a python binary tree?
[英]How do I find the coordinates of the nodes in a binary tree given as a heap in the input?
給定一個堆作為輸入,例如:
1 2 3 - 5 - 7
其中“-”代表一個空節點,我想找到節點的坐標,對於上面的輸入,它是:
[1, 0] [0, 2] [2, 2] [-1, -1] [1, 4] [-1, -1] [3, 4]
坐標變換的規則如下:
我一生都無法弄清楚如何解決這個問題,因此將不勝感激。
如果查看堆,您會注意到每一層的節點數是前一層的兩倍。 所以你有1、2、4、8、16等級數。
給定節點在輸入數組中的索引,您可以通過對索引取以 2 為底的對數並向下取整,輕松確定它所在的級別。 也就是說,如果我們使用基於 1 的索引,那么:
log2(1) = 0
log2(2) = 1
log2(3) = 1
log2(4) = 2
log2(5) = 2
log2(6) = 2
log2(7) = 2
將這些值乘以 2 以獲得Y
坐標。
對於X
坐標,如果取一個索引並減去出現在其上方所有級別上的節點數,則該項目的索引位於其 row 上。 考慮列表中的第四個(基於 1 的)項目。 您知道它在第 2 級。在它之前的節點數是(2^2)-1
或4-3 = 1
。 因此,列表中的第 4 項在其級別的索引 1 處。
從您的問題中不清楚您想如何轉換行索引。 如果所有項目都有值,那么在您的最后一行,X 坐標將為 0、1、2、3。 如果這就是您想要對每一行進行處理的方式,那么您只需從上一段中描述的計算中減去 1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.