从堆栈创建二叉树?

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

我现在简单地定义了堆栈(所以它们只有一个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 ),但即使是那条简单的行也似乎是段错误。

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

(编译器将报告空指针赋值,但是因为您指向一个随机位置,因此会在null点取消引用时发生段错误。)