Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memberi Isyarat Tamat Traversal dengan Benar dalam Latihan Kesetaraan Pokok Binari Go?

Bagaimanakah Saya Boleh Memberi Isyarat Tamat Traversal dengan Benar dalam Latihan Kesetaraan Pokok Binari Go?

Barbara Streisand
Lepaskan: 2024-12-10 16:49:17
asal
644 orang telah melayarinya

How Can I Properly Signal the End of Traversal in a Go Binary Tree Equivalence Exercise?

Latihan Pergi Tour #7: Kesetaraan Pokok Binari

Apabila mencuba latihan kesetaraan pokok binari dalam lawatan Go, anda mungkin menghadapi cabaran dalam memberi isyarat apabila tiada lagi unsur yang tinggal di dalam pokok. Kod yang diberikan cuba menggunakan saluran untuk menyampaikan nilai daripada pokok, tetapi ia gagal menangani isu isyarat ini.

Masalahnya

Menutup saluran semasa rekursif traversal pramatang menamatkan penghantaran nilai. Menggunakan close(ch) dalam fungsi Walk() menutup saluran sebelum semua nilai dihantar.

Penyelesaian Menggunakan Penutupan

Penutupan membolehkan anda mencipta tanpa nama fungsi yang menangkap pembolehubah dari skop sekeliling. Ini boleh digunakan untuk menjana fungsi berjalan tersuai yang menutup saluran secara automatik apabila pelaksanaannya selesai.

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

Dalam penyelesaian ini, fungsi Walk() mengembalikan penutupan berjalan yang mengendalikan lintasan pokok . Apabila penutupan keluar, ia menutup saluran secara automatik, menunjukkan bahawa tiada lagi nilai untuk dihantar. Ini memastikan bahawa hujung penerima boleh menentukan apabila lintasan selesai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memberi Isyarat Tamat Traversal dengan Benar dalam Latihan Kesetaraan Pokok Binari Go?. 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