1

我正在编写一个实现Binary Search Tree (BST). 因此,我开始将二叉树节点实现为struct. 由于二叉树节点包含两个pointers到其他二叉树节点,因此该结构包含指向该结构类型变量的指针。为此,我知道需要结构的前向声明。我已经做到了。然而,对于下面的简单程序,我得到一个运行时错误,该程序除了为所述结构的成员分配一个值之外什么都不做。我不明白为什么。请让我知道原因。

#include <iostream>
using namespace std;

struct t_node;

struct t_node
{
       int data;
       t_node* left;
       t_node* right;
};

int main()
{
    t_node *root;
    root->data = 2;

    cin.get();
    return 0;
}

我正在使用Dev-C++ 4.9.9.2.

谢谢!

4

2 回答 2

1

您需要为节点分配内存。使用new

t_node* root = new t_node();
于 2012-09-22T02:46:41.457 回答
1
t_node *root;
root->data = 2;

不好。您正在取消一个未初始化的指针。

t_node *root = new t_node;
root->data = 2

将为您的节点分配内存,并解决您的问题。

于 2012-09-22T02:49:37.870 回答