我想实现一个二叉树,其中每个节点都包含leftright子树。这是我的类(class)样子:

class KDTree
{
public:
    KDTree(...);
    ~KDTree();

private:
    LatLng element; // The value of the node
    KDTree left;    // The left sub-tree
    KDTree right;   // The right sub-tree
};

然后我的构造函数如下所示:
KDTree::KDTree(...)
{
    value = ...;
    if(not_finished)
    {
        left  = KDTree(...);
        right = KDTree(...);
    }
    else
    {
        left = NULL; // how to implement this properly ?
        right= NULL; // how to implement this properly ?
    }
}

如果我尝试像上面显示的那样放入NULL,则编译器会抱怨leftright属性未初始化。如何正确执行此操作?

最佳答案

左右应该是这样的KDTree指针:KDTree *左,KDTree *右。然后Null将按使用方式工作

另外,在第一个if语句中,您可能需要更改

left = KDTree (...);
right = KDTree (...);


left = new KDTree (...);
right = new KDTree (...);

关于c++ - 在C++中实现树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36901110/

10-11 08:39