首頁 >後端開發 >Golang >如何將路徑字串陣列轉換為樹狀結構?

如何將路徑字串陣列轉換為樹狀結構?

Patricia Arquette
Patricia Arquette原創
2024-10-27 04:42:29428瀏覽

How can I convert a path string array into a tree-like structure?

將路徑字串陣列轉換為樹狀結構

簡介:

構造樹狀結構路徑字串陣列可能具有挑戰性,但透過適當的技術,可以有效地實現。

解決方案:

提供的解決方案採用遞歸函數 AddToTree ,它將表示樹的當前狀態和要添加的剩餘路徑段的節點列表作為輸入。演算法進行如下:

  1. 檢查目前路徑段(路徑的第一個元素)是否已經作為目前根的子節點存在。
  2. 如果沒有找到,則建立以目前路徑段為名稱的新節點,並將其新增為目前根的子節點。
  3. 在剩餘路徑段上遞歸呼叫 AddToTree,使用新建立的子節點作為新根。

程式碼片段:

<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>

解的優點:

  • 解決方案的優點:
  • 可重用性:
  • 此函數可以重複應用以將多個路徑字串新增至樹中。
  • 完整性:
  • 透過在新增之前檢查現有節點來避免樹中的重複節點。

效率:遞歸確保函數僅在樹中必要的節點上運行。

[{
    "name": "a",
    "children": [{
        "name": "b",
        "children": [{
            "name": "c"
        }, {
            "name": "g"
        }]
    }, {
        "name": "d"
    }]
}]
範例輸出:程式碼產生以下輸出:

以上是如何將路徑字串陣列轉換為樹狀結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn