从堆栈创建二叉树?

时间:2010-11-10 21:49:13

标签: c data-structures tree

我的任务是创建一个程序,将((X+3)*(X+4))之类的内容转换为二叉树,以及其他一些功能。到目前为止,我已经接受了输入,并将其解析为两个堆栈,一个包含操作数,另一个包含运算符。

我现在简单地定义了堆栈(因此它们只有一个nextnode和char value。 但是,我似乎在将堆栈中的值添加到树中时遇到了问题(因此定义树时可能存在问题)。

我的堆栈定义如下:

typedef struct node
{
    char value;
    struct node * nextnode;
} node;

我的树被定义:

typedef struct tree
{
    node * thisNode;
    struct tree *right, *left;
} tree;

我不确定节点*部分,也许它应该是不同的东西。

我一直在考虑2 + 3的简单案例。在这种情况下,树的根应为+,左边为2,右边为3.

 +
/\
2 3

如何将堆栈中的内容添加到我的树中?我尝试过使用

root->thisNode = operatorTop;

其中operatorTop是运算符堆栈的顶部(定义为node * operatorTop), 但即便是这条简单的线条似乎也是分段错误。

1 个答案:

答案 0 :(得分:4)

也许问题是你没有调用malloc()root预留空间。

(编译器会报告空指针赋值,但是因为你指向一个随机位置,所以在null点取消引用时会出现段错误。)