Deserilizing n-ary tree
Deserilizing n-ary tree
我应该对n- ary树进行挑选。
此代码创建我的树:
foodtree.addChildren("Food", { "Plant", "Animal" } );
foodtree.addChildren("Plant", { "Roots", "Leaves", "Fruits" } );
foodtree.addChildren("Animal", { "Fish", "Mammals", "Birds" } );
foodtree.addChildren("Roots", { "Potatoes", "Carrots" } );
foodtree.addChildren("Leaves", { "Lettuce", "Cabbage" } );
foodtree.addChildren("Fruits", { "Apples", "Pears", "Plums", "Oranges" } );
foodtree.addChildren("Fish", { "Salmon", "Tuna" } );
foodtree.addChildren("Mammals", { "Beef", "Lamb" } );
foodtree.addChildren("Birds", { "Chicken", "Duck" } );
foodtree.addChildren("Salmon", { "Wild", "Farm" } );
foodtree.addChildren("Apples", { "GrannySmith", "Gala" } );
第一个参数是父,第二个参数是初始化列表,是第一个参数的孩子。
我的序列化函数看起来像这样:(我正在使用2个函数来执行此操作)
template<typename T>
void Ntree<T>:: serializeHelper (node* r, ofstream& ofs)
{
if(r->child.size() > 0)
ofs<<r->val <<" ";
for(int i=0; i < r->child.size(); i++)
ofs<<r->child[i]->val <<" ";
if(r->child.size() > 0)
ofs << "n";
vector<node*> vt = r->child;
for (int j = 0; j < vt.size(); j++)
serializeHelper(vt[j], ofs);
}
template <typename T>
void Ntree<T>::serialize(std::string filename)
{
ofstream ofs(filename);
serializeHelper(root, ofs);
}
致电foodtree.serialize(" foodtree.out")。我的.out文件看起来像这样:
Food Plant Animal
Plant Roots Leaves Fruits
Roots Potatoes Carrots
Leaves Lettuce Cabbage
Fruits Apples Pears Plums Oranges
Apples GrannySmith Gala
Animal Fish Mammals Birds
Fish Salmon Tuna
Salmon Wild Farm
Mammals Beef Lamb
Birds Chicken Duck
我想编写一个备用函数,该函数将将此文件带入并创建一个n-ary树。在每行,.out文件中的第一个单词必须是父节点,以下单词必须是孩子。我不知道该怎么做。任何帮助都将受到赞赏。
到目前为止,我所拥有的只是:void ntree :: Deserialize(string&amp; filename);:p
以这种方式考虑。
首先是如何创建树?
做同样的事情,除非而不是使用文字值从文件中获取值。还使用循环而不是单独的addchildren语句。
相关文章:
- 使用 boost::p roperty_tree::p tree 如何获取特定键的值
- N-Ary 树 C++ - 如何查找节点的级别
- n-ary布尔语法从中缀到前缀的Boost::Spirit转换?
- 使用访问者设计模式在N- ARY树中重复访问子节点值
- Boost R-Tree中的最小边界矩形计算
- 有效删除N- Ary树的节点列表
- C++ EXC_BAD_ACCESS (Binary Tree)
- Boost::p tree - 访问列表中包含的属性树节点
- Deserilizing n-ary tree
- Balancing KD Tree
- 如何填充'Tree'结构'Declaratively'
- C N- ARY树实现用于递归下降解析
- 为什么qmap使用skiplist而不是ob rb-tree
- 避免在节点中添加重复的子级,使用 Kasper Peeters 的 Tree.hh 库
- SPOJ GSS1 WA - Segment tree
- Flattening the tree
- C++ AVL Tree Deletion
- RedBlack and AVL tree c++
- C++中已经有为 LinkedList、HashMap、Tree 等编写的类
- boost::p roperty_:tree - 解析和处理数据