【发布时间】:2021-07-12 12:07:27
【问题描述】:
假设我有一棵二叉树。我使用new创建节点,但现在我想在析构函数中删除它们:
void BinaryTree::recursiveDestructor(Node *& noeud){
if (node != 0) {
recursiveDestrutor(node->leftTree);
recursiveDestructor(node->rightTree);
delete node;
node = 0;
}
}
我使用析构函数中的方法
BinaryTree::~BinaryTree(){
recursiveDestructor(root);
}
有没有办法在析构函数中只使用while 或for 循环,而不是递归调用析构函数中的方法?使用循环会更快,并且避免在析构函数中使用方法。如果我不能使用循环,有没有办法提高性能?
【问题讨论】:
-
无论如何你都需要一些堆栈,搜索binary tree iterative traversal
-
是的。使用队列。在
BinaryTree析构函数中,将非空根推入队列,然后循环 (a) 弹出队列的头部。 (b) 将刚刚弹出的节点的非空左右指针推入队列, (c) 删除刚刚弹出的节点。重复。当队列为空时,您就完成了。 -
@WhozCraig 你能告诉我使用 c++ 会是什么样子吗?
-
@notaprogrammertoday 已发布。祝你好运。
标签: c++ binary-tree destructor