void Tree::insertAux(Node *node, int data) { if(data < node->data) { if(node->left == nullptr) { node->left = defineNode(data); } else { insertAux(node->left, data); } } else if(data > node->data) { if(node->right == nullptr) { node->right = defineNode(data); } else { insertAux(node->right, data); } } }
void Tree::insert(int data) { if(top == nullptr) { // define top top = defineNode(data); } else { insertAux(top, data); } }
void insertAux(TreeNode * parent, TreeNode * n) { assert(parent && n); if (rand() % 2) { // Left if (parent->left) { insertAux(parent->left, n); } else { parent->left = n; } } else { // Right if (parent->right) { insertAux(parent->right, n); } else { parent->right = n; } } }
void insert(int v) { TreeNode * n = new TreeNode(v); if (!root) { root = n; } else { insertAux(root, n); } }