Trie树中的Trie节点的析构函数

我正在创建Trie的实现,TrieNode结构是个别节点和TrieSet类,它是完整的树。这里是我的TrieNode的签名:Trie树中的Trie节点的析构函数

struct TrieNode { 

TrieNode(bool in, TrieNode *p);

~TrieNode();

void deleteChildren(TrieNode *node);

bool isLeafNode();

bool inSet;

TrieNode *parent;

TrieNode *children[30];

};

我试图确定哪些第一递归删除所有的孩子,最后删除该节点的析构函数,但我得到一个分段错误。这里是我的构造函数,析构函数和它的帮助函数的代码:

TrieNode::TrieNode(bool in, TrieNode *p) 

{

inSet = in;

parent = p;

}

TrieNode::~TrieNode()

{

for(int i = 0; i < 30; i++)

{

if(children[i] != nullptr)

{

delete children[i];

}

}

}

任何帮助,将不胜感激,谢谢!

回答:

children数组未被初始化,所以数据将是随机垃圾并试图删除它们未定义的行为,并可能崩溃。

deleteChildren中调用delete node是错误的,因为它导致递归析构函数调用(就像在析构函数中调用delete this一样)。

可能还有其他问题。我没有广泛地看。

以上是 Trie树中的Trie节点的析构函数 的全部内容, 来源链接: utcz.com/qa/259098.html

回到顶部