Duyệt cây LNR không dùng đệ quy


Đề bài thì như thế này, Thầy em yêu cầu sử dụng stack để duyệt cây nhị phân.
Em đang bí về vấn đề này khi vẽ tay ra vẫn chưa có cách làm đúng. Nên em cần sự trợ giúp!

image
Với các cấu trúc NLR hay LNR thì em làm như thế này.
Còn cấu trúc LRN hay RLN thì em vẫn làm như trên và thêm 1 stack để đảo ngược thứ tự

image
cấu trúc LRN hay NRL

làm cái stack chứa cặp Node* và enum L/N/R nữa cho nó dễ :clown_face: std::stack<std::pair<Node*, TraversalIndex>>

ví dụ LNR thì đầu tiên s.emplace(root, TraversalIndex::L), rồi khi pop ra thì auto [p, i] = s.top(), nếu i == TraversalIndex::L thì push vào stack 2 cặp: (p, N)(p->left, L), nếu i == N thì in p->data và push vào 1 cặp (p->right, L). Hình như ko cần trường hợp R thì phải

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?