C二叉树结构

时间:2014-05-31 22:17:30

标签: c struct binary-tree

我刚刚开始学习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;
}

1 个答案:

答案 0 :(得分:1)

更改此行

tree = addTreeNode(2, tree);

tree = addTreeNode(2, &tree);

你的函数需要通过指针传递,但是你传递了值。

编辑:

由于您要在函数BinaryTree *addTreeNode中分配结构,因此应在BinaryTree tree;内将BinaryTree *tree;更改为main。此外,您的函数返回指向BinaryTree*的指针,该指针无法分配给BinaryTree类型的变量