Tôi muốn tạo một trình vòng lặp trên cây nhị phân để có thể sử dụng phạm vi dựa trên vòng lặp. Tôi hiểu rằng tôi nên thực hiện hàm start() và end() trước tiên.Thực hiện một trình lặp trên cây nhị phân (hoặc tùy ý) bằng cách sử dụng C++ 11
Bắt đầu có lẽ nên trỏ đến thư mục gốc. Tuy nhiên, theo đặc tả, hàm end() trả về "phần tử theo phần tử hợp lệ cuối cùng". Yếu tố (nút) nào? Nó sẽ không được bất hợp pháp để trỏ đến một số "không hợp lệ" nơi?
Điều khác là toán tử ++. Cách tốt nhất để trả về phần tử "tiếp theo" trong cây là gì? Tôi chỉ cần một số lời khuyên để bắt đầu với chương trình này.
Tôi muốn mở rộng/tăng thêm câu hỏi của mình *. Điều gì sẽ xảy ra nếu tôi muốn lặp lại một cái cây với một vị thần tùy ý? Hãy để mỗi nút có một véc tơ của trẻ em và để bắt đầu() trỏ đến gốc "thực". Tôi có lẽ sẽ phải thực hiện một hàng đợi (cho bề rộng đầu tiên) bên trong lớp iterator để lưu trữ các unique_ptr của các nút, phải không? Sau đó, khi hàng đợi trống rỗng, tôi sẽ biết rằng tôi đã vượt qua tất cả các nút và do đó sẽ trả về TreeIterator (nullptr) khi oprator ++() được gọi. Nó có ý nghĩa không? Tôi muốn nó đơn giản nhất có thể và chỉ chuyển tiếp.
* Hoặc tôi có nên tạo một chuỗi mới không?
Trình vòng lặp 'end()' của bạn có thể sẽ kết thúc bằng một số giá trị sentinel không phải là một nút thực trong cây. –