如何为节点添加名称? (二叉树,C)

时间:2016-12-25 16:04:07

标签: c string binary-tree

我正在使用C atm中的二进制搜索树,工作得很好,插入,找到,打印等节点。但是,它们的值不正确。我树中的每个节点都有一个电话号码(电话)和一个名字(姓名)。电话号码不是问题,而是名字。例如,如果我的根号为1且名称应为" Mike",则表示number = 1且name = 1

每个其他节点都相同。数=名称。为什么?我想这与值是字符串而不是int有关,对吧?我的代码中的重要部分将是以下内容:

Model::where('id', $id)->withCount('relation')->first();

我需要改变什么?我现在尝试了几件事,但没有任何效果......

1 个答案:

答案 0 :(得分:2)

正如你所说,问题是名称是一个字符串类型,实际上是char*。因此,您只分配一个指向字符串的指针。你必须复制字符串。像这样:

new_node->name = malloc((strlen(name)+1) * sizeof(char)); // allocate
strcpy(new_node->name, name); // copy the content

注意malloc语句中的+1。您需要为字符串终止字符('\ 0')分配一个额外的字符。