Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menukar tatasusunan rentetan laluan menjadi struktur seperti pokok?

Bagaimanakah saya boleh menukar tatasusunan rentetan laluan menjadi struktur seperti pokok?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 04:42:29346semak imbas

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

Menukar Susunan Rentetan Laluan menjadi Struktur Seperti Pokok

Pengenalan:

Membina struktur seperti pokok daripada tatasusunan rentetan laluan boleh mencabar, tetapi dengan teknik yang sesuai, ia boleh dicapai dengan cekap.

Penyelesaian:

Penyelesaian yang disediakan menggunakan fungsi rekursif, AddToTree , yang mengambil sebagai input senarai nod yang mewakili keadaan semasa pepohon dan segmen laluan yang tinggal untuk ditambahkan. Algoritma berjalan seperti berikut:

  1. Semak sama ada segmen laluan semasa (elemen pertama laluan) sudah wujud sebagai nod anak akar semasa.
  2. Jika tidak ditemui, buat nod baharu dengan segmen laluan semasa sebagai namanya dan tambahkannya sebagai anak kepada punca semasa.
  3. Panggil secara rekursif AddToTree pada segmen laluan yang tinggal, menggunakan nod anak yang baru dibuat sebagai punca baharu.

Snippet Kod:

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

Kelebihan Penyelesaian:

  • Kebolehgunaan Semula: Fungsi ini boleh digunakan berulang kali untuk menambah berbilang rentetan laluan pada pepohon.
  • Integriti: Ia mengelakkan nod pendua dalam pepohon dengan menyemak nod sedia ada sebelum menambah.
  • Kecekapan: Rekursi memastikan bahawa fungsi hanya beroperasi pada nod yang diperlukan dalam pepohon.

Contoh Output:

The kod menjana output berikut:

[{
    "name": "a",
    "children": [{
        "name": "b",
        "children": [{
            "name": "c"
        }, {
            "name": "g"
        }]
    }, {
        "name": "d"
    }]
}]

Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar tatasusunan rentetan laluan menjadi struktur seperti pokok?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn