APCS
這題要求我們找出一個樹狀圖的根節點編號,並計算整個樹的總高度 H(T)。樹的根節點是沒有父節點的節點,而樹的總高度是所有節點高度的總和。
n
,然後逐個讀取每個節點的子節點資訊。對於每個節點,先讀入其子節點的數量k
,然後讀入k
個子節點的編號。G
來存儲樹的結構。G
是一個列表的列表,其中G[i]
包含了節點i
的所有子節點。同時,使用Parent
列表來記錄每個節點的父節點編號,初始值為 -1。Parent
列表中值為 -1 的節點。dfs(node)
遞迴地計算給定節點的高度,並更新全局height
列表,其中height[i]
表示節點i
的高度。height
列表,將所有節點的高度累加得到總和。範例輸入:
7
0
2 6 7
2 1 4
0
2 3 2
0
0
n = 7
:這意味著樹狀圖有7個節點。G = [ [] for i in range(n) ]
創建一個包含7個空列表的列表,用於存儲每個節點的子節點。Parent = [ -1 for i in range(n) ]
創建一個長度為7的列表,初始值都為-1,用來記錄每個節點的父節點。G[1] = [5, 6]
(編號減1以符合Python索引)。G[2] = [0, 3]
。Parent
列表中。最終,Parent
列表中仍為-1的項目即為根節點。在這個例子中,假設最終找到的根節點為5(即列表中的編號4)。dfs(5)
被調用。由於節點5有2個子節點(節點3和節點2),因此會分別對這些子節點進行DFS遞迴調用,即dfs(3)
和dfs(2)
。dfs(3)
中,由於節點3沒有子節點,其高度設為0。返回後,繼續處理dfs(2)
,依此類推。