39 lines
755 B
C++
39 lines
755 B
C++
#include <type_traits>
|
|
|
|
#ifndef NODE_H_
|
|
# define NODE_H_
|
|
|
|
template <typename DATANODE>
|
|
struct TreeNode {
|
|
|
|
DATANODE* data; // TODO must exist only for final recurtion
|
|
TreeNode<DATANODE>* up;
|
|
TreeNode<DATANODE>* down;
|
|
TreeNode<DATANODE>* right;
|
|
TreeNode<DATANODE>* left;
|
|
|
|
explicit TreeNode(unsigned short level) {
|
|
if (level) {
|
|
up = new TreeNode<DATANODE>(level - 1);
|
|
down = new TreeNode<DATANODE>(level - 1);
|
|
left = new TreeNode<DATANODE>(level - 1);
|
|
right = new TreeNode<DATANODE>(level - 1);
|
|
} else {
|
|
up = NULL;
|
|
down = NULL;
|
|
left = NULL;
|
|
right = NULL;
|
|
}
|
|
data = NULL;
|
|
}
|
|
|
|
virtual ~TreeNode() {
|
|
delete up;
|
|
delete down;
|
|
delete left;
|
|
delete right;
|
|
}
|
|
};
|
|
|
|
#endif /* !NODE_H_ */
|