插入功能不会返回任何节点

时间:2016-02-01 04:18:15

标签: c binary-search-tree

我正在尝试构建一个BST插入函数,但它不会返回我在main函数中插入的任何节点。

这是我的计划:

// BST structure
typedef struct bin_tree{
   int data;
   struct bin_tree *left;
   struct bin_tree *right;
}bin_t;

// create a new tree  
bin_t *newTree(int val){
   bin_t *nnode = (bin_t *)malloc(sizeof(bin_t));
   nnode->data = val;
   nnode->left = NULL;
   nnode->right = NULL;
   return nnode;
}

// insertion function
void insert(bin_t *tree, int val){
   if(tree == NULL){
      tree = newTree(val);
   }else{ 
      if(val < (tree->data)){
          insert(tree->left, val);
      }else if(val > (tree->data)){
          insert(tree->right, val);
      }
   }
}

void print_inorder(bin_t *tree)
{
   if (tree)
   {
       print_inorder(tree->left);
       printf("%d\n",tree->data);
       print_inorder(tree->right);
   }
}


int main(){
   bin_t *root = NULL;
   insert(root, 6);
   insert(root, 45);
   insert(root, 66);
   insert(root, 3);
   insert(root, 9);
   insert(root, 33);
   insert(root, 34);
   printf("In Order Display: \n");
   print_inorder(root);
}

如果我将树参数指向insert函数中的指针,它就可以工作:

void insert(bin_tree **tree, int val)

或者在insert函数中返回新节点(树)的地址。

我的问题是,是否有另一种插入节点的方法,它将从插入函数返回地址/值,然后我可以按顺序打印它?由于这个插入功能是hw要求,我无法改变它。如果我将根节点放在全局上(尝试过,但仍然无法正常工作,并且不知道为什么),这也很重要吗?

提前致谢!

0 个答案:

没有答案