cuốn sách gpt4 ai đã làm

Cây n-ary khử tuần tự hóa

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 13:08:55 30 4
mua khóa gpt4 Nike

Tôi nên giải tuần tự hóa một cây n-ary.

Mã này tạo cây của tôi:

    foodtree.addChildren("Thức ăn", { "Thực vật", "Động vật" } );
foodtree.addChildren("Cây", { "Rễ", "Lá", "Quả" } );
foodtree.addChildren("Động vật", { "Cá", "Động vật có vú", "Chim" } );
foodtree.addChildren("Rễ", { "Khoai tây", "Cà rốt" } );
foodtree.addChildren("Lá", { "Rau diếp", "Bắp cải" } );
foodtree.addChildren("Trái cây", { "Táo", "Lê", "Mận", "Cam" } );
foodtree.addChildren("Cá", { "Cá hồi", "Cá ngừ" } );
foodtree.addChildren("Động vật có vú", { "Thịt bò", "Thịt cừu" } );
foodtree.addChildren("Chim", { "Gà", "Vịt" } );
foodtree.addChildren("Cá hồi", { "Hoang dã", "Trang trại" } );
foodtree.addChildren("Táo", { "GrannySmith", "Gala" } );

Tham số đầu tiên là tham số cha và tham số thứ hai là danh sách khởi tạo là con của tham số đầu tiên.

Chức năng tuần tự hóa của tôi trông như thế này: (Tôi sử dụng 2 chức năng để làm điều này)

mẫu
void Ntree:: serializeHelper (node* r, ofstream& ofs)
{
if(r->child.size() > 0)
ofs<val <<" ";

for(int i=0; i < r->child.size(); i++)
ofs<child[i]->val <<" ";

if(r->child.size() > 0)
của << "\n";

vector vt = r->child;

for (int j = 0; j < vt.size(); j++)
serializeHelper(vt[j], ofs);

}


mẫu
void Ntree::serialize(std::string filename)
{
ofstream ofs(tên tệp);
serializeHelper(root, ofs);
}

Sau khi gọi foodtree.serialize("foodtree.out"). Tệp .OUT của tôi trông như thế này:

Thực phẩm Thực vật Động vật 
Rễ cây Lá Quả Quả
Rễ Khoai tây Cà rốt
Lá Xà lách Bắp cải
Trái cây Táo Lê Quả mận Cam
Táo Granny Smith Gala
Động vật Cá Động vật có vú Chim
Cá hồi cá ngừ
Trang trại cá hồi hoang dã
Thịt cừu thịt bò
Chim Gà Vịt

Tôi muốn viết một hàm giải tuần tự hóa sẽ nhận tệp này và tạo cây n-ary. Trong mỗi dòng, từ đầu tiên trong tệp .OUT phải là nút cha và các từ tiếp theo phải là nút con. Tôi không biết phải làm gì. Bất kỳ trợ giúp đều được đánh giá cao.

Cho đến nay tôi chỉ có: void Ntree::deserialize(string& filename);

câu trả lời hay nhất

Hãy nghĩ về nó theo cách này.

Ban đầu bạn tạo ra cây này như thế nào?

Thực hiện tương tự, ngoại trừ việc lấy giá trị từ tệp thay vì sử dụng giá trị bằng chữ. Đồng thời sử dụng vòng lặp thay vì câu lệnh addChildren riêng biệt.

Về c++ - Deserializing n-ary tree, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/40824430/

30 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress