Tree 在给定子指针和父指针的情况下创建树
我有一个文件,其中包含一组数字,每行有它们的父数字和子数字。我想在C中用它建一棵树。我该如何通过它 示例文件如下所示: Thisnode parentnode lchildnode rchildnode 1 14 -1 -1 2 13 -1 -1 3 10 -1 -1 4 9 -1 -1 5 13 -1 -1 6 11 -1 -1 7 9 -1 -1 8 12 -1 -1 9 10 7 4 10 11 3 9 11 12 10 6 12 15 11 8 13 14 2 5 14 15 13 1 15 -1 14 12 Thisnode父节点lchildnode rchildnode 1 14 -1 -1 2 13 -1 -1 3 10 -1 -1 4 9 -1 -1 5 13 -1 -1 6 11 -1 -1 7 9 -1 -1 8 12 -1 -1 9 10 7 4 10 11 3 9 11 12 10 6 12 15 11 8 13 14 2 5 14 15 13 1 15 -1 14 12Tree 在给定子指针和父指针的情况下创建树,tree,binary-tree,packing,Tree,Binary Tree,Packing,我有一个文件,其中包含一组数字,每行有它们的父数字和子数字。我想在C中用它建一棵树。我该如何通过它 示例文件如下所示: Thisnode parentnode lchildnode rchildnode 1 14 -1 -1 2 13 -1 -1 3 10 -1 -1 4 9 -1 -1 5 13 -1 -1 6 11 -1 -1 7 9 -1 -1 8 12 -1 -1 9 10 7 4 10 11 3 9 11 12 10 6 12 15 11 8 13 14 2 5 14 1
完成这项任务有两个部分。构建一个简单的列表,并将未排序的列表组织到一个结构中 扫描仪 创建包含四个阶段(thisnode、parentnode、lchildnode、rchildnode)的。当机器处于第一个状态(thisnode)时,将新的“未排序”叶分配到列表的“顶部”。此列表应足够大,以容纳所有叶节点。还记得在最后一个阶段(rchildnode)结束时重置机器状态。 最后,从输入中读取单个
字符,一次读取一个,并评估以下条件
检查签名(-
)
检查字符是否介于0..9
之间,并将值应用于临时数字
如果1.
或2.
为真,请读取下一个数字
否则,将临时编号应用于顶部叶,并使机器进入下一个状态
分类
在未排序的列表上迭代,并找到“root”元素。对于初始值和子级,使用“create”方法填充二叉树结构。类似于
struct节点{
int值;
结构节点*左;
结构节点*右;
};
结构节点*创建节点(int-keyvalue、int-lkey、int-rkey)
{
结构节点*n=malloc(sizeof(结构节点));
n->value=keyvalue;
n->left=0;
n->right=0;
如果(lkey>-1)
{
int llkey=你的迭代器左(lkey);
int-lrkey=您的迭代器(lkey);
n->left=创建_节点(lkey、llkey、lrkey);
}
如果(rkey>-1)
{
int rlkey=您的迭代程序左(rkey);
int rrkey=你的迭代器右键(rkey);
n->right=创建_节点(rkey、rlkey、rrkey);
}
返回n;
}
不是最干净的,但它会生成一个完整的二叉树
看起来像是作业,我错了吗?真的需要扫描仪吗?从每行读取4int
s就足够了。如果数据文件本质上是二进制的,则不会。如果出现-1
,则是对ANSIatoi
课程工作的赠予。