如何從路徑字串陣列建構樹狀結構
簡介:
給定一個表示文件路徑的字串數組,我們的目標是建立反映目錄層次結構的樹狀資料結構。陣列中的每個字串代表從根目錄到特定檔案或目錄的完整路徑。
使用子清單的遞歸方法:
要遞歸地建立樹,我們需要從左到右遍歷路徑字串,將它們分成多個元件。我們可以使用帶有名稱和子節點切片的 Node 結構來表示樹。
<code class="go">type Node struct { Name string Children []Node }</code>
關鍵的見解是對節點清單而不是單一節點的子節點進行操作。這使我們能夠處理具有不同根節點的多棵樹。
<code class="go">func AddToTree(root []Node, names []string) []Node { if len(names) > 0 { var i int for i = 0; i < len(root); i++ { if root[i].Name == names[0] { //already in tree break } } if i == len(root) { root = append(root, Node{Name: names[0]}) } root[i].Children = AddToTree(root[i].Children, names[1:]) } return root }</code>
範例:
對於輸入路徑字串:
<code class="go">s := [...]string{"a/b/c", "a/b/g", "a/d"}</code>
函數AddToTree 產生以下樹結構:
<code class="json">{ "name": "a", "children": [ { "name": "b", "children": [ { "name": "c" }, { "name": "g" } ] }, { "name": "d", "children": [] } ] }</code>
>相對於原始方法的優點:
以上是如何從表示檔案系統層次結構的路徑字串陣列有效地建構樹狀結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!