Saya memiliki pohon tidak berarah yang simpulnya ingin saya beri label. Node daun harus diberi label satu. Lalu, anggap daunnya sudah dibuang. Di pohon yang tersisa, daunnya harus diberi label dua. Proses ini berlanjut dengan cara yang jelas sampai semua simpul memiliki label. Alasan saya melakukan ini adalah saya ingin menyimpan simpul dalam antrian, dan pergi melalui mereka "pergi dulu". Apakah ada cara mudah untuk melakukan ini waktu?
Saya dapat memecahkan masalah dengan melakukan BFS di setiap langkah. Tetapi dalam kasus terburuk, pada setiap langkah saya melalui setiap titik, menghapus tepat dua daun dan enqueue mereka. Saya percaya ini membutuhkan waktu kuadratik.
Gagasan lain adalah pertama-tama menemukan semua daun, dan kemudian melakukan BFS dari setiap daun. Ini tidak memberi saya solusi yang diinginkan. Misalnya, perhatikan semacam "grafik mahkota" seperti pada gambar di bawah ini. Solusi yang diinginkan ditampilkan, tetapi meluncurkan BFS dari masing-masing daun akan menghasilkan hanya dua label yang digunakan.
Idealnya, algoritma waktu linear juga mudah dijelaskan dan diimplementasikan.