-
Giann Karlo Aguirre Samboní authoredGiann Karlo Aguirre Samboní authored
adt2amas.cpp 3.89 KiB
#include "ad_tree.hpp"
#include "gate.hpp"
#include "and.hpp"
#include "or.hpp"
#include "sand.hpp"
#include "sor.hpp"
#include "nand.hpp"
#include "nor.hpp"
#include "snand.hpp"
#include "snor.hpp"
int main(){
TreeNode* node_zero = new TreeNode();
TreeNode* node_one = new TreeNode();
TreeNode* node_two = new TreeNode();
TreeNode* node_three = new TreeNode();
TreeNode* node_four = new TreeNode();
TreeNode* node_five = new TreeNode();
TreeNode* node_six = new TreeNode();
TreeNode* node_seven = new TreeNode();
TreeNode* node_eight = new TreeNode();
TreeNode* node_nine = new TreeNode();
And* node_ten = new And();
Or* node_eleven = new Or();
Sand* node_twelve = new Sand();
Sor* node_thirdteen = new Sor();
Nand* node_fourteen = new Nand();
Nor* node_fiveteen = new Nor();
Snand* node_sixteen = new Snand();
Snor* node_seventeen = new Snor();
//ADtree tree;
ADtree *tree = new ADtree(node_zero);
/*Proof if you can add a child to parent which is not in the tree*/
// Adding...
cout << "Adding..." << endl;
tree->add_child(node_one, node_zero);
tree->add_child(node_two, node_zero);
tree->add_child(node_three, node_zero);
tree->add_child(node_four, node_zero);
tree->add_child(node_five, node_zero);
tree->add_parent(node_one, node_five);
tree->add_child(node_six, node_five);
tree->add_child(node_six, node_zero);
tree->add_child_pos(node_seven, node_zero, 2);
tree->add_parent(node_two, node_five);
tree->add_parent_pos(node_four, node_five, 2);
tree->add_child(node_five, node_five); // probably doesn't make sense
tree->add_parent(node_zero, node_zero); // probably doesn't make sense */
/* cout << node_zero->get_info() << endl;
cout << node_one->get_info() << endl;
cout << node_two->get_info() << endl;
cout << node_three->get_info() << endl;
cout << node_four->get_info() << endl;
cout << node_five->get_info() << endl;
cout << node_six->get_info() << endl;
cout << node_seven->get_info() << endl;
cout << node_eight->get_info() << endl;
cout << node_nine->get_info() << endl; */
cout << tree->get_info();
cout << tree->ids_in_tree() << endl;
// Removing...
cout << "Removing ..." << endl;
/* tree->remove_child(node_one, node_zero);
tree->remove_child(node_two, node_zero);
tree->remove_child(node_three, node_zero);
tree->remove_child(node_four, node_zero);
tree->remove_child(node_five, node_zero);
tree->remove_child(node_six, node_zero);
tree->remove_child(node_seven, node_zero); */
/* tree->remove_parent_pos(0, node_five);
tree->remove_parent_pos(2, node_five);
tree->remove_parent_pos(1, node_five);
tree->remove_parent_pos(0, node_five); */
tree->remove_parent(node_zero, node_one);
tree->remove_parent(node_zero, node_two);
tree->remove_parent(node_zero, node_three);
tree->remove_parent(node_zero, node_four);
tree->remove_parent(node_zero, node_five);
tree->remove_parent(node_zero, node_six);
tree->remove_parent(node_zero, node_seven);
//tree->remove_child_pos(0, node_nine);
cout << tree->get_info();
cout << tree->ids_in_tree() << endl;
// Lineage printing...
/* cout << "child associated ids of node one:" << endl;
for (auto& i : node_zero->get_child_associated_ids()) // reference to The C++ Programming Language book, p. 899
cout << i << ' ';
std::cout << endl;
set<int> tmp_set = node_zero->get_child_associated_ids();
for(auto it = (tmp_set).cbegin() ; it != (tmp_set).cend() && *it != cur_child->get_id(); it++){
std::cout << *it << ' ';
} */
tree->add_child(node_ten, node_zero);
delete tree;
cout << node_ten->get_info() << endl;
cout << node_eleven->get_info() << endl;
cout << node_twelve->get_info() << endl;
cout << node_thirdteen->get_info() << endl;
cout << node_fourteen->get_info() << endl;
cout << node_fiveteen->get_info() << endl;
cout << node_sixteen->get_info() << endl;
cout << node_seventeen->get_info() << endl;
/* NodeType nodeTest{NodeType::Attack};
cout << "node type = " << to_string(nodeTest) << endl; */
return 0;
}