Ayuda con árboles generales
Publicado por Adrian (1 intervención) el 06/10/2019 07:45:57
Hola! Necesito ayuda con un problema sobre árboles. Tengo esta implementación, pero la última función no funciona. Se supone que recibe el número h y debería devolver todos los nodos que tienen ese número de hijos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class _NodoArbol:
#El método privado para crear un nodo de árbol
def __init__(self, valor, primog):
self._valor = valor
self._primog = primog
self._sig_herm = None
#El método privado para considerar el nodo como un árbol
def _arbol(self):
return Árbol(self)
class Bosque:
#Crea un bosque vacío
def __init__(self):
self._nodo = None
#Añadir un árbol al bosque
def añ_árbol(self, a):
a._nodo._sig_herm = self._nodo
self._nodo = a._nodo
#Calcula la longitud de un bosque
def __len__(self):
c = self._nodo
n = 0
while not c is None:
n += 1
c = c._sig_herm
return n
#Consulta el i-ésimo árbol del bosque
def __getitem__(self, indice):
assert indice != 0, "Indice no valido"
h = self._nodo
assert not h is None, "Indice no valido"
j = 1
while h and j != indice:
j += 1
h = h._sig_herm
assert not h is None, "Indice no valido"
return h._arbol()
class Árbol:
#Planta un arbol en el bosque
def __init__(self, elem, bosque = None):
if bosque is None:
self._nodo = elem
else:
self._nodo = _NodoArbol(elem, bosque)
#Consulta la raiz de un arbol
def raíz(self):
return self._nodo._valor
#Consulta la sucesion de hijos de un arbol
def hijos(self):
return self._nodo._primog
#Calcula el número de hijos de un árbol
def núm_hijos(self):
return len(self._nodo._primog)
#Determina si un árbol es una hoja
def es_hoja_(self):
return self.núm_hijos() == 0
def hasHchildren(self, h):
assert not self.raíz() is None, "El árbol está vacío"
cont = 0
c = self.núm_hijos()
while self._nodo._primog is None:
if c == h:
cont += 1
c = self._nodo._primog
return cont
Valora esta pregunta


0