Skip to content

Instantly share code, notes, and snippets.

@evilthreads669966
Last active October 16, 2023 22:10
Show Gist options
  • Save evilthreads669966/49936783dbfd51c5680e9f72ae0c2132 to your computer and use it in GitHub Desktop.
Save evilthreads669966/49936783dbfd51c5680e9f72ae0c2132 to your computer and use it in GitHub Desktop.
#include <iostream>
using namespace std;
class Word{
public:
string word;
Word(string word){
this->word = word;
}
bool operator>(Word &word){
if(this->word.size() > word.word.size())
return true;
else
return false;
}
bool operator<(Word &word){
if(this->word.size() < word.word.size())
return true;
else
return false;
}
bool operator==(Word &word){
if(this->word.size() == word.word.size())
return true;
else
return false;
}
};
template<typename T> struct Node{
T data;
Node<T> *left,*right;
};
template<typename T> class Tree{
private:
Node<T>* root = nullptr;
Node<T>* insert_recursive(Node<T>* node, T data){
if(node == nullptr){
root = new Node<T>;
root->data = data;
return root;
}
if(data < node->data)
node->left = insert_recursive(node->left, data);
else if(data > node->data)
node->right = insert_recursive(node->right, data);
return node;
}
void inorder_recursive(Node<T>* root){
if(root != nullptr){
inorder_recursive(root);
cout << root->left->data;
inorder_recursive(root);
}
}
public:
Node<T>* insert(T data){
root = insert_recursive(root, data);
return root;
}
void inorder(){
inorder_recursive(root);
}
};
int main(){
Tree<Word>* tree = new Tree<Word>;
Word* word1 = new Word("a");
Word* word2 = new Word("hello");
Word* word3 = new Word("hell");
Word* word4 = new Word("tom");
Word* word5 = new Word("benny");
tree->insert(*word1);
tree->insert(*word2);
tree->insert(*word3);
tree->insert(*word4);
tree->insert(*word5);
tree->inorder();
delete word1;
delete word2;
delete word3;
delete word4;
delete word5;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment