三角树中的trie节点的破坏者

Destructor of a Trie Node in a Trie Tree

本文关键字:节点 破坏者 trie 三角      更新时间:2023-10-16

我正在创建具有Trienode struct的Trie的实现,该结构是单个节点,而Trieset类是完整的树。这是我的trienode的签名:

struct TrieNode {
    TrieNode(bool in, TrieNode *p);
    ~TrieNode();
    void deleteChildren(TrieNode *node);
    bool isLeafNode();
    bool inSet;
    TrieNode *parent;
    TrieNode *children[30];
};

我正在尝试定义击曲子,该驱动器首先递归删除所有孩子,然后最终删除节点,但我会遇到细分故障。这是我的构造函数,Destructor及其辅助功能的代码:

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一样)。

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