将元素插入C中的BST

时间:2016-05-21 09:43:04

标签: c

我有类似以下的结构类型:

typedef struct TreeNode{
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
} TreeNode;

向我的

添加元素
TreeNode* insert(TreeNode *root, int val){
TreeNode* a;
    a = root;
    int i;
    if(a==NULL){
        a -> val = val;
        a -> left = NULL;
        a -> right = NULL;
    }
    else if(a->val < val){
        return insert(root->left,val);
    }
    else if(a->val > val)
        return insert(root->right,val);
}

当我评估它时,它没有输出。我的错是什么?

1 个答案:

答案 0 :(得分:1)

  1. a == NULL情况下,您需要为节点分配内存。否则a -> val是非法的。
  2. 还需要添加一个返回代码。你可以返回(a)。然后,当您调用该函数时,将其称为root = insert(root, val)
  3. 代码如下。

    TreeNode* insert(TreeNode *root, int val){
      TreeNode* a;
      a = root;
      int i;
      if(a==NULL){
        // Allocate memory here
        a = malloc(sizeof (root));
        if (a== NULL)
        {
           // Malloc error, You can exit the program or print a debug message here
        }
    
        a -> val = val;
        a -> left = NULL;
        a -> right = NULL;
      }
      else if(a->val < val){
        return insert(root->left,val);
      }
      else if(a->val > val)
        return insert(root->right,val);
      return a;
    }