在C ++中创建非二进制树结构

时间:2016-04-08 23:17:39

标签: c++ class pointers dynamic tree

我需要帮助创建非二叉树结构。此结构必须包含一个类node,其中包含与节点一样多的节点指针。这是我感到困惑的地方。

这是我的班级node

class nodo{
public:
    int id;
    char info[255];
    nodo **son,*father;
    nodo()
    {
        strcpy(info,"");
        son=(nodo*)malloc(sizeof(nodo));
    }
};

据我了解,每次我需要一个新的son指针时,我必须执行以下代码:

son=(nodo*)realloc(sizeof(nodo)*t)

t是我想要添加的节点数加1.我似乎无法理解如何访问指针。例如,我已经添加了2 sons,我想访问第二个,我应该怎么做?

还有其他方法可以解决这个问题吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您正在尝试为每个节点动态创建子指针数组。只要您知道节点预先有多少个孩子,这种方法就可以了。

你的构造函数应该是这样的:

nodo(int numsons) {
   son = new nodo*[numsons];
}

这将分配一个子节点数组,您需要在解构器中删除它。

如果你不知道节点预先有多少个孩子(当你调用构造函数时),你应该使用一个向量。