二叉树实现

时间:2013-02-16 18:07:09

标签: c binary-tree binary-search-tree

我似乎遇到了分段错误,似乎错误来自对tra的调用,但我无法确切地看到我编写的代码到底出了什么问题。真的没有头绪,有什么想给我一个暗示吗?非常感谢。

struct node *tra(struct node * start) {
  struct node * current = start;       
  return current; }

Table ins(Key_Type input, Table table) {
  if ((find(input, table)) == FALSE) {
    struct node *newVal = tra(table -> head, input);
    newVal -> element = input;

我已经定义了一个包含head,left和right元素的struct节点。我确定tra在null时返回current,因为我创建的树一开始是空的,所以所有节点都是空的。

2 个答案:

答案 0 :(得分:1)

tra看起来很可疑。检查是什么?如果currentNULL,则将其返回,否则堆栈将丢弃并将垃圾返回给调用者。

答案 1 :(得分:1)

那里有一些奇怪的东西。

if (current == NULL)
  return current;

为什么return current?当前是null

struct node *new = tra(table -> head, input);

tra只接受一个论点?

我建议您使用gdb。现在学会使用它,它将使你有能力自己回答这个问题。这并不难。