Arbol general a binario
Enviado por Dana Jiménez • 7 de Abril de 2023 • Práctica o problema • 725 Palabras (3 Páginas) • 35 Visitas
Arbol general a binario
clase Nodo:
valor
hijoIzquierdo
hermanoDerecho
función Nodo(valor):
valor = valor
hijoIzquierdo = nulo
hermanoDerecho = nulo
función convertirArbolBinario(raiz):
si raiz.hijoIzquierdo no es nulo:
convertirArbolBinario(raiz.hijoIzquierdo)
hijo = raiz.hijoIzquierdo
mientras hijo.hermanoDerecho no sea nulo:
hijo.hermanoDerecho = hijo.hermanoDerecho.hijoIzquierdo
hijo.hermanoDerecho.hermanoIzquierdo = nulo
hijo = hijo.hermanoDerecho
convertirArbolBinario(raiz.hijoIzquierdo.hermanoDerecho)
Arbol General a binario importando la librería anytree:
from anytree import Node, RenderTree
from anytree.search import findall_by_attr
class NodoBinario(Node):
def __init__(self, name, parent=None, children=None):
super().__init__(name, parent, children)
self.hermano_derecho = None
def convertir_arbol_binario(raiz):
if raiz.children:
convertir_arbol_binario(raiz.children[0])
hijo = raiz.children[0]
for nieto in hijo.siblings:
hijo.hermano_derecho = nieto
hijo = nieto
convertir_arbol_binario(raiz.children[0].siblings[0])
raiz.children = [raiz.children[0]]
# Creamos el árbol general
root = Node("A")
b = Node("B", parent=root)
c = Node("C", parent=root)
d = Node("D", parent=b)
e = Node("E", parent=b)
f = Node("F", parent=c)
# Mostramos el árbol general
for pre, _, node in RenderTree(root):
print("%s%s" % (pre, node.name))
# Transformamos el árbol en un árbol binario
convertir_arbol_binario(root)
# Mostramos el árbol binario resultante
for pre, _, node in RenderTree(root):
print("%s%s" % (pre, node.name))
Árbol general a binario:
class Node:
def __init__(self, value):
self.value = value
self.children = []
def add_child(self, child):
self.children.append(child)
def convert_to_binary(node):
if not node.children:
return None
left_child = node.children[0]
node.children.pop(0)
new_node = Node(node.value)
new_node.add_child(left_child)
...