/*************************************************
 * ADS Praktikum 1.2
 * Tree.h
 * Erweiterung um Hilfsattribute und -funktionen gestattet, wenn erforderlich.
 *************************************************/
#pragma once
#include "TreeNode.h"
#include "catch.h"
#include <string>

using namespace std;

class Tree {
private:
    TreeNode* m_anker = nullptr;
    int currentNodeChronologcalID = 0;
public:
    Tree();
    ~Tree();
    void addNode(std::string Name, int Age, double Income, int PostCode);
    bool deleteNode(int NodeOrderID);
    bool searchNode(std::string Name);
    void printAll();
    void printNode(TreeNode* node);
    void printPreOrder(TreeNode* ptr);
    void printPostOrder(TreeNode* ptr);
    void printInOrder(TreeNode* ptr);
    void printLevelOrder();

    TreeNode* getAnker();
    void setAnker(TreeNode* _anker);
    // friend-Funktionen sind für die Tests erforderlich und müssen unangetastet
    // bleiben!
    friend TreeNode* get_anker(Tree& TN);
};
