mport [Link].
Scanner;
// Clase que representa un nodo en un árbol binario
class Nodo {
int dato;
Nodo izquierda;
Nodo derecha;
// Constructor que inicializa un nodo con un valor dado
public Nodo(int dato) {
[Link] = dato;
[Link] = null;
[Link] = null;
// Clase que representa un árbol binario
class ArbolBinario {
private Nodo raiz; // Raíz del árbol
// Constructor que inicializa el árbol sin ningún nodo
public ArbolBinario() {
raiz = null;
// Método para insertar un nuevo nodo en el árbol
public void insertar(int dato) {
raiz = insertarRec(raiz, dato);
// Método privado para insertar recursivamente un nodo en el árbol
private Nodo insertarRec(Nodo nodo, int dato) {
if (nodo == null) {
return new Nodo(dato);
if (dato < [Link]) {
[Link] = insertarRec([Link], dato);
} else if (dato > [Link]) {
[Link] = insertarRec([Link], dato);
return nodo;
// Método para buscar un valor en el árbol
public boolean buscar(int valor) {
return buscarRec(raiz, valor);
// Método privado para buscar recursivamente un valor en el árbol
private boolean buscarRec(Nodo nodo, int valor) {
if (nodo == null) {
return false;
if ([Link] == valor) {
return true;
} else if (valor < [Link]) {
return buscarRec([Link], valor);
} else {
return buscarRec([Link], valor);
// Clase principal que maneja la entrada y salida de datos
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
[Link]("Ingrese el tamaño del arreglo: ");
int n = [Link]();
int[] arreglo = new int[n];
[Link]("Ingrese los valores del arreglo:");
for (int i = 0; i < n; i++) {
arreglo[i] = [Link]();
}
ArbolBinario arbol = new ArbolBinario();
for (int valor : arreglo) {
[Link](valor);
[Link]("Ingrese un número para buscar en el árbol: ");
int numeroBuscado = [Link]();
boolean encontrado = [Link](numeroBuscado);
if (encontrado) {
[Link]("El número está en el árbol.");
} else {
[Link]("El número no está en el árbol.");