#include <iostream>
using namespace std;
template <typename T>
class node {
public:
node(T value); //constructor
node(const node &); //copy constructor
void setFrequency(int num); //sets the frequency
int getFrequency(); //returns the frequency
T getItem(); //returns the item
private:
T item;
int frequency;
node<T>* leftChild;
node<T>* rightChild;
bool leftChildThread;
bool rightChildThread;
};
//-------------------------- Constructor ------------------------------------
template <typename T>
node<T>::node(T value) {
item = value;
frequency = 1;
}
//-------------------------- Copy ------------------------------------
template <typename T>
node<T>::node(const node<T> ©This) {
item = copyThis.value;
frequency = copyThis.frequency;
}
//-------------------------- setFrequency ------------------------------------
template <typename T>
void node<T>::setFrequency(int num) {
frequency = num;
}
//-------------------------- getFrequency ------------------------------------
template <typename T>
int node<T>::getFrequency() {
return frequency;
}
//-------------------------- getItem ------------------------------------
template <typename T>
T node<T>::getItem() {
return item;
}
int main()
{
node<int> ni(42);
int i = ni.getItem();
cout << i << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiAKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIG5vZGUgewoKcHVibGljOgogICAgbm9kZShUIHZhbHVlKTsgLy9jb25zdHJ1Y3RvcgogICAgbm9kZShjb25zdCBub2RlICYpOyAvL2NvcHkgY29uc3RydWN0b3IKICAgIHZvaWQgc2V0RnJlcXVlbmN5KGludCBudW0pOyAvL3NldHMgdGhlIGZyZXF1ZW5jeQogICAgaW50IGdldEZyZXF1ZW5jeSgpOyAvL3JldHVybnMgdGhlIGZyZXF1ZW5jeQogICAgVCBnZXRJdGVtKCk7IC8vcmV0dXJucyB0aGUgaXRlbQoKcHJpdmF0ZToKICAgIFQgaXRlbTsKICAgIGludCBmcmVxdWVuY3k7CiAgICBub2RlPFQ+KiBsZWZ0Q2hpbGQ7CiAgICBub2RlPFQ+KiByaWdodENoaWxkOwogICAgYm9vbCBsZWZ0Q2hpbGRUaHJlYWQ7CiAgICBib29sIHJpZ2h0Q2hpbGRUaHJlYWQ7Cn07CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kbm9kZTxUPjo6bm9kZShUIHZhbHVlKSB7CiAgICBpdGVtID0gdmFsdWU7CiAgICBmcmVxdWVuY3kgPSAxOwoKfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb3B5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kbm9kZTxUPjo6bm9kZShjb25zdCBub2RlPFQ+ICZjb3B5VGhpcykgewogICAgaXRlbSA9IGNvcHlUaGlzLnZhbHVlOwogICAgZnJlcXVlbmN5ID0gY29weVRoaXMuZnJlcXVlbmN5Owp9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNldEZyZXF1ZW5jeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgbm9kZTxUPjo6c2V0RnJlcXVlbmN5KGludCBudW0pIHsKICAgIGZyZXF1ZW5jeSA9IG51bTsKfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBnZXRGcmVxdWVuY3kgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbnQgbm9kZTxUPjo6Z2V0RnJlcXVlbmN5KCkgewogICAgcmV0dXJuIGZyZXF1ZW5jeTsKfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBnZXRJdGVtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KVCBub2RlPFQ+OjpnZXRJdGVtKCkgewogICAgcmV0dXJuIGl0ZW07Cn0KIAoKaW50IG1haW4oKQp7IAogbm9kZTxpbnQ+IG5pKDQyKTsKIGludCBpID0gbmkuZ2V0SXRlbSgpOwogY291dCA8PCBpIDw8IGVuZGw7CiByZXR1cm4gMDsKfQ==