【问题标题】:Create a binary tree from a Stack?从堆栈创建二叉树?
【发布时间】:2010-11-10 21:49:12
【问题描述】:

我的任务是创建一个程序,将((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;

我不确定 node* 部分,也许它应该有所不同。

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

 +
/\
2 3

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

root->thisNode = operatorTop;

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

【问题讨论】:

  • 你必须向我们展示一个完整的程序段错误。您的数据结构本质上没有任何问题(除了您将 char 用于 int 并且您正在对命名结构进行类型定义,这并不完全不正确)。
  • 这几乎就是我要问的所有问题,是否存在本质上的错误。我忘了给它贴上标签,但这是作业,所以我不想/太/太多帮助。霍根让我走上了正轨,正是这样。

标签: c data-structures tree


【解决方案1】:

可能问题是您没有调用malloc()root 保留空间。

(编译器将报告空指针分配,但由于您指向一个随机位置,所以在取消引用空点时会出现段错误。)

【讨论】:

  • 谢谢!就是这样。我知道这很简单。
猜你喜欢
  • 2014-12-07
  • 2011-05-08
  • 2017-10-30
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 2017-07-01
相关资源
最近更新 更多