Apuntes_Python/03_arbol_binario/01_valores_lejanos_primero.py
2022-12-24 22:41:20 -03:00

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()