下面给出的代码是我为在二叉树中插入而编写的代码。该代码适用于根节点,但不适用于其子节点。我知道我必须在插入子节点时传递对根节点的引用,但不知道如何实现它。什么是改变?
#include <stdio.h>
#include <stdlib.h>
struct bintree
{
int data;
struct bintree *left;
struct bintree *right;
};
typedef struct bintree btree;
btree* newnode(btree *node, int data)
{
node=(btree*)malloc(sizeof(btree));
node->data=data;
node->left=NULL;
node->right=NULL;
return node;
}
btree* insert(btree *node, int data)
{
if(node==NULL)
{
return (newnode(node, data));
}
else
{
if(data<=node->data)
{
insert(node->left, data);
return(node);
}
else
{
insert(node->right, data);
return(node);
}
}
}
int main()
{
btree *root=NULL;
root=insert(root, 5);
insert(root, 3);
insert(root, 6);
return 0;
}
在此代码中,节点(如果为null)将发送到 newnode 函数,并分配内存和数据。在其他情况下,使用插入功能。
答案 0 :(得分:1)
改变这个:
if(data<=node->data)
{
insert(node->left, data);
return(node);
}
else
{
insert(node->right, data);
return(node);
}
为:
if(data<=node->data)
{
node->left = insert(node->left, data);
}
else
{
node->right = insert(node->right, data);
}
return (node);
你的主要代码也应该是:
root = insert(root, 5);
root = insert(root, 3);
root = insert(root, 6);