Primero creamos el nodo.
struct Nodo{
int dato;
Nodo *der;
Nodo *izq;
};
Creamos el nuevo Nodo en una función externa.
Nodo *crearNodo(int n){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo->dato = n;
nuevo_nodo->der = NULL;
nuevo_nodo->izq = NULL;
return nuevo_nodo;
}
Comenzamos con la función insertar
Ahora para insertar un nodo en el árbol necesita tener en cuenta:
void insertar(Nodo *&arbol, int n){
//...
}
El árbol puede estar vacío
if(arbol == NULL){
Nodo *nuevo_nodo = crearNodo(n);
arbol = nuevo_nodo;
}
Ya tendríamos nuestro nodo raíz
El árbol ya tiene un nodo o más
else{
int valorRaiz = arbol->dato;
if(n < valorRaiz){
//Se coloca a la izquierda
insertar(arbol->izq,n);
}
else{
//Se coloca a la derecha
insertar(arbol->der,n)
}
}
Notese que es una función recursiva, vea [[Informática/Programación/C++/11. Funciones]]
Código Completo
//Librerias
#include<iostream>
#include<stdlib.h>
#include<conio.h>
using namespace std;
//Estructura
struct Nodo{
int dato;
Nodo *der;
Nodo *izq;
};
//Prototipos de Función
Nodo *crearNodo(int);
void insertarNodo(Nodo *&, int);
void menu();
//Variables globales
Nodo *raiz = NULL;
//Función Principal
int main(){
menu();
return 0;
}
//Funciones
void menu(){
int dato, opc;
do{
cout<<".:MENU:."<<endl;
cout<<"1. Insertar un elemento"<<endl;
cout<<"0. Salir del programa"<<endl;
cout<<"Digite su opcion: "; cin>>opc;
switch (opc){
case 1:
cout<<"\n\tDigite un numero: "; cin>>dato;
insertarNodo(raiz, dato);
cout<<"\n";
system("pause");
break;
}
system("cls");
}while(opc != 0);
}
Nodo *crearNodo(int n){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo -> dato = n;
nuevo_nodo -> izq = NULL;
nuevo_nodo -> der = NULL;
return nuevo_nodo;
}
void insertarNodo(Nodo *&raiz, int n){
if(raiz == NULL){ //El padre está vacío
Nodo *nuevo_nodo = crearNodo(n); //raiz = crearNodo(n);
raiz = nuevo_nodo;
}
else{
if(raiz -> dato < n){
//Insertar a la izquierda
insertarNodo(raiz -> izq, n);
}
else{
//Insertar a la derecha
insertarNodo(raiz -> der, n);
}
}
}
Nota: En la función insertarNodo una forma equivalente es:
if(raiz == NULL){ //El padre está vacío
raiz = crearNodo(n);
}