我想实现一个二叉树,其中每个节点包含left
和right
子树。这里是我的课怎么样子:在C++中实现树
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
正如我在上面,那么编译器抱怨left
和right
性质没有初始化。我怎样才能正确地做到这一点?
如果你有C++ 11,请考虑养成使用'nullptr'而不是'NULL'的习惯。你能显示你得到的确切错误吗? – kfsone
如果每个'KDTree'包含两个'KDTree',那么你得到无限递归,大小是无限的。 – doug65536
@Shiro你正在用这堂课改造一个方形轮子。除非是作业问题,否则您应该只抓取现有的一百万个实现中的一个,这些实现是模板化的,分配器意识到的,并且是异常安全的。 –