Tôi đang tìm kiếm thuật toán hiệu quả nhất để lấy một cây (được lưu dưới dạng danh sách các cạnh; HOẶC làm danh sách ánh xạ từ nút cha sang danh sách các nút con); và tạo ra, cho MỌI nút, một danh sách tất cả các nút xuất phát từ nó (cấp độ lá và cấp độ không lá).
Việc thực hiện phải thông qua các vòng lặp thay vì thu hồi, do quy mô; và lý tưởng nhất là O (N).
Câu hỏi SO này bao gồm một giải pháp hợp lý rõ ràng tiêu chuẩn để tìm câu trả lời cho MỘT nút trong cây. Nhưng rõ ràng, việc lặp lại thuật toán đó trên mỗi nút cây rất kém hiệu quả (từ đỉnh đầu của tôi, O (NlogN) đến O (N ^ 2)).
Rễ cây được biết đến. Cây có hình dạng hoàn toàn tùy ý (ví dụ không phải N-nary, không cân đối về bất kỳ cách nào, hình dạng hoặc hình thức, không có độ sâu đồng đều) - một số nút có 1-2 con, một số có 30K con.
Ở mức độ thực tế (mặc dù nó không ảnh hưởng đến thuật toán), cây có các nút ~ 100K-200K.