Al fin después de mucho luchar ya encontramos la contestación de este rompecabezas que agunos lectores de nuestro sitio han presentado. Si tienes algún detalle que compartir no dudes en compartir tu conocimiento.
Ejemplo 1: cómo crear un árbol binario en Python
classNode:def__init__(self, data):
self.left =None
self.right =None
self.data = data
definsert(self, data):# Compare the new value with the parent nodeif self.data:if data < self.data:if self.left isNone:
self.left = Node(data)else:
self.left.insert(data)elif data > self.data:if self.right isNone:
self.right = Node(data)else:
self.right.insert(data)else:
self.data = data
# Print the treedefPrintTree(self):if self.left:
self.left.PrintTree()print( self.data),if self.right:
self.right.PrintTree()# Use the insert method to add nodes
root = Node(12)
root.insert(6)
root.insert(14)
root.insert(3)
root.PrintTree()
Ejemplo 2: árbol binario en python
#!/usr/bin/pythonclassNode:def__init__(self, val):
self.l =None
self.r =None
self.v = val
classTree:def__init__(self):
self.root =NonedefgetRoot(self):return self.root
defadd(self, val):if(self.root ==None):
self.root = Node(val)else:
self._add(val, self.root)def_add(self, val, node):if(val < node.v):if(node.l !=None):
self._add(val, node.l)else:
node.l = Node(val)else:if(node.r !=None):
self._add(val, node.r)else:
node.r = Node(val)deffind(self, val):if(self.root !=None):return self._find(val, self.root)else:returnNonedef_find(self, val, node):if(val == node.v):return node
elif(val < node.v and node.l !=None):
self._find(val, node.l)elif(val > node.v and node.r !=None):
self._find(val, node.r)defdeleteTree(self):# garbage collector will do this for us.
self.root =NonedefprintTree(self):if(self.root !=None):
self._printTree(self.root)def_printTree(self, node):if(node !=None):
self._printTree(node.l)printstr(node.v)+' '
self._printTree(node.r)# 3# 0 4# 2 8
tree = Tree()
tree.add(3)
tree.add(4)
tree.add(0)
tree.add(8)
tree.add(2)
tree.printTree()print(tree.find(3)).v
print tree.find(10)
tree.deleteTree()
tree.printTree()
Recuerda que tienes la capacidad de comentar .
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)