return FALSE;
if(NULL == *ppTreeNode){
*ppTreeNode = (TREE_NODE*)create_tree_node(data);
assert(NULL != *ppTreeNode);
(*ppTreeNode)->number = 1;
return TRUE;
}
return _insert_node_into_tree(*ppTreeNode, data);
} 那么,此时保存的时候放在硬盘里面的数据应该有哪些呢?我们在遍历每一个节点的时候,只需要把对应的数据和序列号依次放到硬盘即可。
typedef struct _DATA
{
int data;
int number;
}DATA;
typedef struct _DATA
{
int data;
int number;
}DATA;
保存的数据总要再次启用吧?怎么加载呢?很简单,四个步骤:
1)根据记录的节点总数分配n*sizeof(TREE_NODE)空间;
2)依次从硬盘中取出DATA数据,把它们复制给TREE_NODE,暂时left_side和right_side指针为空;
3)对于对于每一个节点n,寻找它的父节点n>>1,填充left_side或者是right_side,并且根据(n%2)是否为1判断当前节点是左节点还是右节点;
4)获取n=1的节点,那么这个节点就是我们需要寻找的根节点,至此数据就加载完毕。