Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Kita Boleh Menentukan Kesetaraan Pokok Binari dengan Tepat dalam Go?
Fungsi yang sama dalam Latihan Pokok Binari Go Tour membandingkan sama ada dua binari pokok mempunyai nilai yang sama. Cabarannya terletak pada penentuan apabila kedua-dua pokok dilalui sepenuhnya untuk mengisytiharkannya setara.
Pelaksanaan asal cuba menggunakan saluran untuk membandingkan nilai. Walau bagaimanapun, ia menghadapi isu menentukan bila saluran kosong.
Pendekatan alternatif menggunakan fungsi tertib lebih tinggi dan penutupan untuk menandakan keadaan akhir pokok dengan anggun. Fungsi Berjalan yang dipertingkatkan memanfaatkan penutupan untuk memulakan fungsi berjalan. Penutupan memastikan saluran ditutup semasa fungsi kembali, menghalang penutupan saluran pramatang akibat pengulangan.
Berikut ialah fungsi Walk yang diperbetulkan:
func Walk(t *tree.Tree, ch chan int) { defer close(ch) // Closes the channel when the 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) }
Pendekatan yang disemak ini memastikan saluran ditutup hanya selepas semua nilai dihantar, membolehkan Same membandingkan pepohon dengan tepat untuk kesetaraan.
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menentukan Kesetaraan Pokok Binari dengan Tepat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!