200 lines
4.0 KiB
Python
Executable File
200 lines
4.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
"""
|
|
Valores mas lejanos(profundos) primero:
|
|
|
|
Escribe una función, ValoresLejanosPrioridad, que reciba la raíz
|
|
de un árbol binario.
|
|
La función debe retornar una lista que contenga todos los valores
|
|
del árbol, priorizando la lejania de una rama al nivel de esta.
|
|
"""
|
|
|
|
|
|
from arbol_binario import Nodo, ValoresLejanosPrioridad, ValoresLejanosPrioridad2, ValoresLejanosPrioridad3
|
|
import unittest
|
|
import TestRunner
|
|
|
|
|
|
def caso01():
|
|
"""
|
|
a
|
|
/ \
|
|
b c
|
|
/ \ \
|
|
d e f
|
|
-> ['a', 'b', 'd', 'e', 'c', 'f']
|
|
"""
|
|
a = Nodo('a')
|
|
b = Nodo('b')
|
|
c = Nodo('c')
|
|
d = Nodo('d')
|
|
e = Nodo('e')
|
|
f = Nodo('f')
|
|
a.left = b
|
|
a.right = c
|
|
b.left = d
|
|
b.right = e
|
|
c.right = f
|
|
return ValoresLejanosPrioridad(a)
|
|
|
|
|
|
def caso02():
|
|
"""
|
|
a
|
|
-> ['a']
|
|
"""
|
|
a = Nodo('a')
|
|
return ValoresLejanosPrioridad(a)
|
|
|
|
|
|
def caso03():
|
|
"""
|
|
a
|
|
\
|
|
b
|
|
/
|
|
c
|
|
\
|
|
d
|
|
\
|
|
e
|
|
-> ['a', 'b', 'c', 'd', 'e']
|
|
"""
|
|
a = Nodo('a')
|
|
b = Nodo('b')
|
|
c = Nodo('c')
|
|
d = Nodo('d')
|
|
e = Nodo('e')
|
|
a.right = b;
|
|
b.left = c;
|
|
c.right = d;
|
|
d.right = e;
|
|
return ValoresLejanosPrioridad(a)
|
|
|
|
|
|
def caso04():
|
|
return ValoresLejanosPrioridad(None)
|
|
|
|
|
|
class ValoresLejanosPrioridadTestCase(unittest.TestCase):
|
|
|
|
def test_valores_lejanos_primero01(self):
|
|
self.assertEqual(['a', 'b', 'd', 'e', 'c', 'f'], caso01())
|
|
|
|
def test_valores_lejanos_primero02(self):
|
|
self.assertEqual(['a'], caso02())
|
|
|
|
def test_valores_lejanos_primero03(self):
|
|
self.assertEqual(['a', 'b', 'c', 'd', 'e'], caso03())
|
|
|
|
def test_valores_lejanos_primero04(self):
|
|
self.assertEqual([], caso04())
|
|
|
|
|
|
def caso11():
|
|
a = Nodo('a')
|
|
b = Nodo('b')
|
|
c = Nodo('c')
|
|
d = Nodo('d')
|
|
e = Nodo('e')
|
|
f = Nodo('f')
|
|
a.left = b
|
|
a.right = c
|
|
b.left = d
|
|
b.right = e
|
|
c.right = f
|
|
return ValoresLejanosPrioridad2(a)
|
|
|
|
|
|
def caso12():
|
|
a = Nodo('a')
|
|
return ValoresLejanosPrioridad2(a)
|
|
|
|
|
|
def caso13():
|
|
a = Nodo('a')
|
|
b = Nodo('b')
|
|
c = Nodo('c')
|
|
d = Nodo('d')
|
|
e = Nodo('e')
|
|
a.right = b
|
|
b.left = c
|
|
c.right = d
|
|
d.right = e
|
|
return ValoresLejanosPrioridad2(a)
|
|
|
|
|
|
def caso14():
|
|
return ValoresLejanosPrioridad2(None)
|
|
|
|
|
|
class ValoresLejanosPrioridadTestCase2(unittest.TestCase):
|
|
|
|
def test_valores_lejanos_primero11(self):
|
|
self.assertEqual(['a', 'b', 'd', 'e', 'c', 'f'], caso11())
|
|
|
|
def test_valores_lejanos_primero12(self):
|
|
self.assertEqual(['a'], caso12())
|
|
|
|
def test_valores_lejanos_primero13(self):
|
|
self.assertEqual(['a', 'b', 'c', 'd', 'e'], caso13())
|
|
|
|
def test_valores_lejanos_primero14(self):
|
|
self.assertEqual([], caso14())
|
|
|
|
|
|
def caso21():
|
|
a = Nodo('a')
|
|
b = Nodo('b')
|
|
c = Nodo('c')
|
|
d = Nodo('d')
|
|
e = Nodo('e')
|
|
f = Nodo('f')
|
|
a.left = b
|
|
a.right = c
|
|
b.left = d
|
|
b.right = e
|
|
c.right = f
|
|
return ValoresLejanosPrioridad3(a)
|
|
|
|
|
|
def caso22():
|
|
a = Nodo('a')
|
|
return ValoresLejanosPrioridad3(a)
|
|
|
|
|
|
def caso23():
|
|
a = Nodo('a')
|
|
b = Nodo('b')
|
|
c = Nodo('c')
|
|
d = Nodo('d')
|
|
e = Nodo('e')
|
|
a.right = b
|
|
b.left = c
|
|
c.right = d
|
|
d.right = e
|
|
return ValoresLejanosPrioridad3(a)
|
|
|
|
|
|
def caso24():
|
|
return ValoresLejanosPrioridad3(None)
|
|
|
|
|
|
class ValoresLejanosPrioridadTestCase3(unittest.TestCase):
|
|
|
|
def test_valores_lejanos_primero21(self):
|
|
self.assertEqual(['a', 'b', 'd', 'e', 'c', 'f'], caso21())
|
|
|
|
def test_valores_lejanos_primero22(self):
|
|
self.assertEqual(['a'], caso22())
|
|
|
|
def test_valores_lejanos_primero23(self):
|
|
self.assertEqual(['a', 'b', 'c', 'd', 'e'], caso23())
|
|
|
|
def test_valores_lejanos_primero24(self):
|
|
self.assertEqual([], caso24())
|
|
|
|
if __name__ == '__main__':
|
|
TestRunner.main()
|
|
#unittest.main()
|
|
|