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

Patricia Arquette
Lepaskan: 2024-10-27 04:42:29
asal
364 orang telah melayarinya

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>
Salin selepas log masuk

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"
    }]
}]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!