在二叉树错误中插入操作?

时间:2016-10-16 04:56:11

标签: c++ binary-tree

我在问题链接的二叉树的插入操作中遇到错误(https://www.hackerrank.com/challenges/binary-search-tree-insertion) 我的代码是:

insert(node * root, int value)
{
    int x = 0;
    node* r = root;
    node* xx;
    while(x==0)
    {
       while(value<r->data&&r->left!=NULL)
       {
            r=r->left;
       }
       if(value<r->data&&r->left == NULL)
       {
         xx->data = value;
         r->left = xx;
         break;
       }
       while(value>r->data && r->right!=NULL)
       {
           r = r->right;
       }       
       if(value>r->data&& r->right == NULL)
       {
            xx->data = value;
            r->right =xx;
            break;
       }
    }
    return root;
} 

我从hackerrank得到的错误如下:

错误的答案! 一些可能的错误:

  1. 您从函数返回了NULL值。
  2. 您的逻辑存在问题
  3. 您正在从功能
  4. 打印一些值

1 个答案:

答案 0 :(得分:0)

对于初学者,您需要在每次插入时分配一个新节点。

像这样开始宣言:

node* insert(node * root, int value)
{
    node* xx = new node();
    xx->left = NULL;
    xx->right = NULL;
    xx->data = value;