1
[[7, 0, 0], [2, 10, 11], [4, 9, 0], [6, 0, 0], [1, 8, 12], [9, 0, 2], [13, 0, 6], [5, 4, 3], [12, 0, 0], [10, 0, 0], [11, 0, 0], [3, 1, 13], [8, 7, 0]] Root=5
列表包含一個子列表的第一個值是節點,第二個值是在左邊的孩子和第三個是在右邊的孩子。 0
意味着沒有孩子左/右,我想找到每個節點的深度並提取相同深度的節點。
p = lable.index(r)
depth_list = []
depth = 0
depth_list.append([r, 0])
while lable_left_right[p][1] != 0 or lable_left_right[p][2] != 0:
depth += 1
left = lable_left_right[p][1]
right = lable_left_right[p][2]
if left == 0 and right != 0:
p = right
depth_list.append([p, depth])
continue
if right == 0 and left != 0:
p = left
depth_list.append([p, depth])
continue
if left != 0 and right != 0:
p = right
depth_list.append([p, depth])
p = left
depth_list.append([p, depth])
continue
這lable
是(所有節點的列表,在這種情況下,[7,2,4,6,1,9,13,5,12,10,11,3,8]
和r
是根。lable_left_right
是給定列表中
我堅持,如果節點有兩個孩子,但我只能用一個p
繼續while循環,所以我會失去另一個孩子作爲一個節點來完成任務 是否有可能在一個while循環的中心啓動另一個while循環並繼續處理原始循環?如果不是,有沒有另一種方法來獲得所有節點的深度?
我不會立即得到語法。 '[7,0,0]'中'0'的語義是什麼? –
0表示左側/右側無子女 –
這是一個以ID列表形式給出的樹。節點5有兩個孩子,節點4和3.節點4有一個孩子,9(左邊)。這就是爲什麼根節點分開指定的原因。 – BurnsBA