Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Membandingkan Pokok Binari dengan Cekap dalam Go: Menyelesaikan Latihan Go Tour #7?

Bagaimana untuk Membandingkan Pokok Binari dengan Cekap dalam Go: Menyelesaikan Latihan Go Tour #7?

Susan Sarandon
Lepaskan: 2024-12-16 10:32:11
asal
570 orang telah melayarinya

How to Efficiently Compare Binary Trees in Go: Solving the Go Tour Exercise #7?

Latihan Pergi Tour #7: Kesetaraan Pokok Binari

Latihan Pergi Tour "Pokok Binari" mencabar anda untuk menentukan sama ada dua pokok binari mengandungi nilai yang sama. Latihan ini memfokuskan pada menulis fungsi Walk rekursif yang melintasi pokok dan menghantar nilainya ke saluran.

Dalam kod yang anda berikan, anda menghadapi masalah menentukan apabila pokok telah dilalui sepenuhnya. Walaupun menutup saluran mungkin kelihatan intuitif, ia akan menamatkan traversal lebih awal kerana sifat rekursif fungsi Walk.

Satu penyelesaian kepada masalah ini ialah menggunakan penutupan. Dengan memanfaatkan versi berasaskan penutupan fungsi Walk, anda boleh menangguhkan penutupan saluran sehingga semua nilai telah dihantar. Kod yang diubah suai di bawah menunjukkan teknik ini:

func Walk(t *tree.Tree, ch chan int) {
    defer close(ch) // Automatically closes the channel when this function returns

    var walk func(t *tree.Tree)
    walk = func(t *tree.Tree) {
        if t == nil {
            return
        }
        walk(t.Left)
        ch <- t.Value
        walk(t.Right)
    }
    walk(t)
}
Salin selepas log masuk

Dengan pengubahsuaian ini, fungsi Walk menutup saluran secara automatik sebaik sahaja semua nilai telah dihantar, menandakan selesainya traversal. Ini membolehkan fungsi Sama membandingkan nilai daripada kedua-dua pokok dengan berkesan dengan menerimanya daripada saluran dan memastikan ia sama.

Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Pokok Binari dengan Cekap dalam Go: Menyelesaikan Latihan Go Tour #7?. 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