我在递归函数中使用后序遍历来解除分配二叉树节点时遇到问题。
这是我的结构的一部分。我的树解构器将从根开始释放
struct Node {
Base * data;
Node * left, * right, *parent;
static long occupancy;
long balance;
long height;
Node (Base * element) : data (element), left (0), right (0),
parent (0), balance (0), height(0) {
occupancy++;
}
~Node (void) {
deleteNodes();
}
void deleteNodes (void) {
if(height == 0)
return;
if(left)
left->deleteNodes();
if(right)
right->deleteNodes();
if(left)
delete left;
if(right)
delete right;
delete data;
}
}