为什么零作为根节点插入此处?

时间:2014-10-21 20:17:48

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

在main中,我创建了树:     TreeNode * bst = malloc(sizeof(TreeNode));

然后将其传递给树创建函数,以及要输入的int值列表;

void thisFunc(TreeNode** root, const int * elements[], const int count){

  const int * test = *elements;
  TreeNode * temp;

  for (int i=0; i<count; i++){
    temp = malloc(sizeof(TreeNode));
    temp->left = temp->right = NULL;
    temp->data = test[i];
    sort(root, temp);
  }
}

据我所知,节点创建时没有错误,我怀疑问题出在我的插入函数中:

void sort(TreeNode** root, TreeNode * temp) {

    // are we putting our node in here?
    if (!(*root)){
     *root = temp;
     printf("ROOT: %i \n", (*root)->data);
     return;
    }
    if (temp->data <= (*root)->data) {
      sort(&(*root)->left, temp);
    }
    else if (temp->data > (*root)->data) {
      sort(&(*root)->right, temp);
    }
}

我尝试打印出数据值,看它是否最初分配0,但它似乎不是。

任何人都可以看到这棵树创造的错误吗?

0 个答案:

没有答案