我刚刚开始学习C并试图用struct创建一个二叉树。 当我尝试在main()中使用addTreeNode时,我得到以下编译错误: " addTreeNode的冲突类型" 和"传递' BinaryTree' (又名' struct BinaryTree')到不兼容类型的参数' BinaryTree *' (又名' struct * BinaryTree')"
我在这里做了一些根本错误的事情吗?
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
struct BinaryTree
{
int data;
struct BinaryTree *left;
struct BinaryTree *right;
};
typedef struct BinaryTree BinaryTree;
BinaryTree *addNode(int element, BinaryTree *tree);
int main(int argc, const char * argv[])
{
BinaryTree *tree;
tree = addTreeNode(2, tree);
return 0;
}
// add the given element element to the tree
BinaryTree *addTreeNode(int element, BinaryTree *tree)
{
if (tree == NULL)
{
tree = malloc(sizeof(BinaryTree));
tree->data = element;
}
else if (element < tree->data)
{
addTreeNode(element, tree->left);
}
else
{
addTreeNode(element, tree->right);
}
return tree;
}
答案 0 :(得分:1)
更改此行
tree = addTreeNode(2, tree);
到
tree = addTreeNode(2, &tree);
你的函数需要通过指针传递,但是你传递了值。
编辑:
由于您要在函数BinaryTree *addTreeNode
中分配结构,因此应在BinaryTree tree;
内将BinaryTree *tree;
更改为main
。此外,您的函数返回指向BinaryTree*
的指针,该指针无法分配给BinaryTree
类型的变量