gpt4 book ai didi

c++ - 递归后序遍历释放二叉树节点

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:03 25 4
gpt4 key购买 nike

我在使用递归函数中的后序遍历取消分配二叉树节点时遇到问题。

这是我的结构的一部分..我的树解构器将从根开始解除分配

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;


}
}

最佳答案

你不需要递归地删除节点(如果你这样做可能会导致问题,因为你会尝试多次删除指针) - 如果你删除,析构函数将自动(递归地)被调用 children 。

~Node (void) {
if (left)
delete left;
if (right)
delete right;
delete data;
}

关于c++ - 递归后序遍历释放二叉树节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19891991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com