1
下面給出的代碼是我寫入用於插入二叉樹的代碼。該代碼適用於根節點,但不適用於其子節點。我知道我必須在插入子元素的同時傳遞對根節點的引用,但不知道如何實現它。什麼是改變?在二叉樹中插入指針錯誤
#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;
}
在這種代碼的節點,如果是空值,被髮送到newnode功能,並被分配內存和數據。在其他情況下使用插入功能。
請避免使用malloc'的'。改用'operator new'。 – Manu343726