我在插入时遇到了问题。这是正确的答案。
/*
Node is defined as
typedef struct node
{
int data;
node * left;
node * right;
}node;
*/
node * insert(node * root, int value)
{
if(root == NULL)
{
node *temp = new node();
temp->left = NULL;
temp->right = NULL;
temp->data = value;
root = temp;
return root;
}
if(value > root->data)
{
root->right = insert(root->right, value);
}
else
root->left = insert(root->left, value);
return root;
}
我所做的解决方案的唯一区别是在if / else语句中我没有分配任何东西。这是我的代码。 节点定义为
typedef struct node
{
int data;
node * left;
node * right;
}node;
*/
node * insert(node * root, int value)
{
if(root == NULL)
{
node *temp = new node();
temp->left = NULL;
temp->right = NULL;
temp->data = value;
root = temp;
return root;
}
if(value > root->data)
{
insert(root->right, value);
}
else
insert(root->left, value);
return root;
}
我不确定我理解为什么这是必要的,因为基本上递归调用此函数将为具有数据值的节点找到正确的位置。 然后,我用正确的数据创建节点,然后将其插入那里。 我将留下问题的链接。 https://www.hackerrank.com/challenges/binary-search-tree-insertion
感谢您的帮助!