void deleteStructure(Node<ValueType> *&root,
                     std::unordered_map<Node<ValueType>*, bool> &visitedNodes) {
    if ((root != nullptr) && (visitedNodes.find(root) == visitedNodes.end())) {
        visitedNodes[root] = true;
        
        deleteStructure(root->left, visitedNodes);
        deleteStructure(root->right, visitedNodes);
        
        delete root;
        
        root = nullptr;
    }
}
Exemplo n.º 2
0
GrammarViewPrivate::GrammarViewPrivate(QWidget* parent): QWidget( parent)
{
  ui.setupUi(this);
  ui.pbImportTexts->setIcon(KIcon("document-import"));
  ui.pbRename->setIcon(KIcon("document-properties"));
  ui.pbMerge->setIcon(KIcon("arrow-down-double"));

  ui.pbAdd->setIcon(KIcon("list-add"));
  ui.pbDelete->setIcon(KIcon("list-remove"));

  connect(ui.lvStructures, SIGNAL(selectionChanged()), this, SLOT(currentSelectionChanged()));

  connect(ui.pbImportTexts, SIGNAL(clicked()), this, SLOT(showImportWizard()));
  connect(ui.pbMerge, SIGNAL(clicked()), this, SLOT(showMergeWizard()));

  connect(ui.pbAdd, SIGNAL(clicked()), this, SLOT(addStructure()));
  connect(ui.pbDelete, SIGNAL(clicked()), this, SLOT(deleteStructure()));

  connect (ui.pbRename, SIGNAL(clicked()), this, SLOT(showRenameWizard()));

  grammarProxy = new QSortFilterProxyModel();
  grammarProxy->setFilterKeyColumn(0);
  ui.lvStructures->setModel(grammarProxy);
  ui.lwExamples->clear();

  //currentSelectionChanged();
}
void printAndDeleteStructure(Node<ValueType> *&root) {
    printStructure (root);
    
    printf("\n----------\n");
    
    deleteStructure(root);
}
void deleteStructure(Node<ValueType> *&root) {
    std::unordered_map<Node<ValueType>*, bool> visitedNodes;
    
    deleteStructure(root, visitedNodes);
}