二进制树节点成员分配的运行时错误

时间:2012-09-22 02:42:47

标签: c++ struct binary-tree nodes

我正在编写一个实现Binary Search Tree (BST)的C ++程序。所以,我开始将二叉树节点实现为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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

t_node* root = new t_node();

答案 1 :(得分:1)

t_node *root;
root->data = 2;

很糟糕。你正在发现一个没有初始化的指针。

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

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