Skip to content
Snippets Groups Projects
adt2amas.cpp 4.44 KiB
#include "ad_tree.hpp"

int main(){

	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();
	TreeNode* node_ten = new TreeNode();

	//ADtree tree;
	ADtree *tree = new ADtree(node_one);
	/*Proof if you can add a child to parent which is not in the tree*/

	// Adding...
	tree->add_child(node_two, node_one);
	/* tree->add_child(node_three, node_one);
	tree->add_child(node_four, node_one);
	tree->add_child(node_five, node_one);  */
	tree->add_child(node_six, node_one);
	tree->add_parent(node_two, node_six);
	/*tree->add_child(node_seven, node_six);
	tree->add_child_pos(node_eight, node_one, 5);
	tree->add_parent(node_three, node_six);
	tree->add_parent_pos(node_nine, node_six, 3);
	tree->add_child(node_six, node_six); // probably doesn't make sense
	tree->add_parent(node_one, node_one); // probably doesn't make sense */
 
	//cout << *(node_one->get_associated_ids().begin()) << endl;
	/* cout << "first parent of node six: " << node_six->get_first_parent()->get_id() << endl;
	cout << "second parent of node six: " << node_six->get_first_parent()->get_next_pibling()->get_id() << endl;
	cout << "third parent of node six: " << node_six->get_first_parent()->get_next_pibling()->get_next_pibling()->get_id() << endl;
	cout << "first parent of node eight: " << node_eight->get_first_parent()->get_id() << endl;
	cout << "last child of node one: " << node_one->get_first_child()->get_next_sibling()->get_next_sibling()->get_next_sibling()->get_next_sibling()->get_next_sibling()->get_id() << endl;
	cout << "fourth parent of node six: " << node_six->get_first_parent()->get_next_pibling()->get_next_pibling()->get_next_pibling()->get_id() << 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 << node_ten->get_info() << endl;


	// Removing...
	/* tree->remove_child(node_six, node_one);
	tree->remove_parent_pos(0, node_six); */
	//tree->remove_child_pos(0, node_ten);

	// Lineage printing...
	/* cout << "child associated ids of node one:" << endl;
	for (auto& i : node_one->get_child_associated_ids()) // reference to The C++ Programming Language book, p. 899
		cout << i << ' ';
	std::cout << endl; */
	/* cout << endl << "parent associated ids of node one:" << endl;
	for (auto& i : node_one->get_parent_associated_ids()) // reference to The C++ Programming Language book, p. 899
		cout << i << ' ';
	cout << endl << "parent associated ids of node four:" << endl;
	for (auto& i : node_four->get_parent_associated_ids()) // reference to The C++ Programming Language book, p. 899
		cout << i << ' ';
	cout << endl << "child associated ids of node six:" << endl;
	for (auto& i : node_six->get_child_associated_ids()) // reference to The C++ Programming Language book, p. 899
		cout << i << ' ';
	cout << endl << "parent associated ids of node six:" << endl;
	for (auto& i : node_six->get_parent_associated_ids()) // reference to The C++ Programming Language book, p. 899
		cout << i << ' '; */
	/* 
	set<int> tmp_set = node_one->get_child_associated_ids();
	for(auto it = (tmp_set).cbegin() ; it != (tmp_set).cend() && *it != cur_child->get_id(); it++){
		std::cout << *it << ' ';
	} */
	
	/* cout << node_six->get_parents() << endl;
	cout << node_six->get_children() << endl; */
	cout << "Removing ..." << endl;
	//cout << node_six->get_info() << endl;
	/* cout << tree->get_info_inorder() << endl; */
	/*tree->preorder_print();
	tree->inorder_print();
	tree->postorder_print();*/

	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 << node_ten->get_info() << endl;

	

	delete tree;

	/* NodeType nodeTest{NodeType::Attack};
	cout << "node type = " << to_string(nodeTest) << endl; */

	return 0;
}