Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 28 additions & 68 deletions arbol_binario.py
Original file line number Diff line number Diff line change
@@ -1,68 +1,28 @@
class Nodo:
def __init__(self, valor):
self.valor = valor
self.izquierda = None
self.derecha = None

class ArbolBinarioBusqueda:
def __init__(self):
self.raiz = None

def insertar(self, valor):
if self.raiz is None:
self.raiz = Nodo(valor)
else:
self._insertar_recursivo(self.raiz, valor)

def _insertar_recursivo(self, nodo, valor):
if valor < nodo.valor:
if nodo.izquierda is None:
nodo.izquierda = Nodo(valor)
else:
self._insertar_recursivo(nodo.izquierda, valor)
elif valor > nodo.valor:
if nodo.derecha is None:
nodo.derecha = Nodo(valor)
else:
self._insertar_recursivo(nodo.derecha, valor)

def buscar(self, valor):
return self._buscar_recursivo(self.raiz, valor)

def _buscar_recursivo(self, nodo, valor):
if nodo is None or nodo.valor == valor:
return nodo is not None
if valor < nodo.valor:
return self._buscar_recursivo(nodo.izquierda, valor)
else:
return self._buscar_recursivo(nodo.derecha, valor)

def _imprimir_recursivo(self, nodo, espacio):
if nodo is not None:
espacio += 5
self._imprimir_recursivo(nodo.derecha, espacio)
print()
for _ in range(5, espacio):
print(end=" ")
print(nodo.valor)
self._imprimir_recursivo(nodo.izquierda, espacio)

def imprimir(self):
self._imprimir_recursivo(self.raiz, 0)

# Ejemplo de uso
arbol = ArbolBinarioBusqueda()
arbol.insertar(10)
arbol.insertar(5)
arbol.insertar(15)
arbol.insertar(7)
arbol.insertar(3)
arbol.insertar(12)
arbol.insertar(14)
arbol.insertar(20)
arbol.insertar(18)
arbol.insertar(16)

# Mostrar el árbol binario
print("Árbol binario:")
arbol.imprimir()
class Nodo:
"""Representa un nodo en un árbol binario."""
def __init__(self, valor):
"""Inicializa un nodo con el valor dado."""
self.valor = valor
self.izquierda = None
self.derecha = None

class ArbolBinario:
"""Representa un árbol binario."""
def __init__(self):
"""Inicializa un árbol binario vacío."""
self.raiz = None

def insertar(self, valor):
"""Inserta un nuevo valor en el árbol."""
if self.raiz is None:
self.raiz = Nodo(valor)
else:
self._insertar_recursivo(valor, self.raiz)

def buscar(self, valor):
"""Busca un valor en el árbol."""
return self._buscar_recursivo(valor, self.raiz)

def imprimir_inorden(self):
"""Imprime los valores del árbol en orden (inorden)."""
self._imprimir_inorden_recursivo(self.raiz)
51 changes: 51 additions & 0 deletions lista_enlazada.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import numpy as np
import matplotlib.pyplot as plt

class LinkedList:
def __init__(self):
self.head = None

def append(self, value):
if self.head is None:
self.head = np.array([value, -1]) # El segundo elemento es el índice del siguiente nodo (-1 si no hay más nodos)
else:
current = self.head
while current[1] != -1:
current_index = int(current[1])
current = self.array[current_index]
new_node_index = len(self.array)
new_node = np.array([value, -1])
current[1] = new_node_index

def display(self):
current = self.head
while current is not None:
print(current[0], end=" -> ")
current_index = int(current[1])
current = self.array[current_index]

# Crear una lista enlazada
linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
linked_list.append(4)

# Mostrar la lista enlazada
linked_list.display()

# Visualizar la lista enlazada utilizando matplotlib
values = []
current = linked_list.head
while current is not None:
values.append(current[0])
current_index = int(current[1])
current = linked_list.array[current_index]

plt.figure(figsize=(8, 6))
plt.title("Linked List")
plt.plot(values, marker='o', linestyle='-')
plt.xlabel("Index")
plt.ylabel("Value")
plt.grid(True)
plt.show()
26 changes: 26 additions & 0 deletions subarreglo_max.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
def max_subarray_sum(arr):
max_sum = arr[0]
current_sum = arr[0]
start_index = 0
end_index = 0
temp_start_index = 0

for i in range(1, len(arr)):
if arr[i] > current_sum + arr[i]:
current_sum = arr[i]
temp_start_index = i
else:
current_sum += arr[i]

if current_sum > max_sum:
max_sum = current_sum
start_index = temp_start_index
end_index = i

return max_sum, arr[start_index:end_index+1]

#funcionalidad
arr = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
max_sum, max_subarray = max_subarray_sum(arr)
print("La suma máxima del subarray contiguo es:", max_sum)
print("El subarray correspondiente es:", max_subarray)