考慮如下定義的無限二叉樹。鑑於是二叉樹和LCA,找到具有此LCA的一對節點的數量?
對於標記爲v的節點,讓其左邊的子節點表示爲2 * v,右邊的子節點爲2 * v + 1。樹的根標記爲1.對於所有i的(a_i < = b_i)的給定n個範圍[a_1,b_1],[a_2,b_2],... [a_n,b_n]每個範圍[a_i,b_i]表示一組不小於a_i且不大於b_i的整數。例如,[5,9]將代表集合{5,6,7,8,9}。
對於某個整數T,讓S表示直到n的所有i的聯合[a_i,b_i]。 我需要找到獨特的元素對X,Y在S的(不論順序)的數量,使得LCA(X,Y)= T
(維基百科有一個相當不錯的解釋什麼LCA兩個節點中的是)
例如,對於輸入:
A = {2, 12, 11}
B = {3, 13, 12}
T = 1
輸出應該6.(的範圍是[2,3],[12,13]和[ 11,12],他們的聯合是集{2,3,11,12,13} (2,3),(2,13),(3,11),(3,12),(11,13)和(12,13))中的所有20個可能的對具有LCA 1.)
而對於輸入:
A = {1,7}
B = {2,15}
T = 3
輸出應該6.(給出的範圍是[1,2]和[7,15],以及它們的並集是集合{1 ,2,7,8,9,10,11,12,13,14,15}。在110種可能的配對中,正好6種((7,12),(7,13),(12,14),(12,15),(13,14)和(13,15))具有LCA 3.)
二叉樹是其根節點'class Node {Node parent,first,second; }'。您正在使用一些奇怪的符號,似乎是指您在其中存儲節點元素的數組索引,但樹通常不會以這種方式存儲在數組中。 – AJMansfield
你能否提供一個鏈接來描述你的「LCA」究竟是什麼意思,或者描述你的「樹」符號? – AJMansfield
數字不是樹節點。 – AJMansfield