Había escrito lo siguiente en python:
#cree clase de árbol con raíz y tamaño de la misma
árbol de clase:
def __init __ (self):
self.root = None
self.numberOfNodes = 0
longitud def (auto):
return self.numberOfNodes
- ¿Desde dónde puedo aprender algoritmos practicando problemas?
- ¿Por qué el orden de los bucles en el algoritmo Floyd-Warshall es importante para su corrección?
- ¿Cómo encuentra un ciclo en una lista "simple" usando solo dos punteros?
- ¿Cómo funciona Swype?
- Cómo determinar si un algoritmo informático es complejo o no
#create clase de nodo para manejar claves, valores, enlaces con izquierda y derecha
Nodo de clase:
def __init __ (self, k, v, l = Ninguno, r = Ninguno, p = Ninguno):
self.key = k
self.value = v
self.leftChild = l
self.rightChild = r
self.parent = p
def hasLeftChild (self):
return self.leftChild
def hasRightChild (self):
return self.rightChild
def getRoot (self):
volver self.root
def getLeftChild (self):
return self.leftChild
def getRightChild (self):
return self.rightChild
# método para insertar en el árbol cuando se proporciona la clave, se proporciona el valor
def insert (self, k, v):
if self.root: self.insertIntoExistingTree (k, v, self.root)
más: self.root = Node (k, v)
self.numberOfNodes + = 1
def insertIntoExistingTree (self, k, v, currentNode):
si k <currentNode.key:
if currentNode.hasLeftChild (): self.insertIntoExistingTree (k, v, currentNode.leftChild)
más: currentNode.leftChild = Node (k, v, p = currentNode)
más:
if currentNode.hasRightChild (): self.insertIntoExistingTree (k, v, currentNode.rightChild)
más: currentNode.rightChild = Node (k, v, p = currentNode)
#ordenar – proceder a la hoja más a la izquierda, raíz inmediata, derecha (recursivamente)
def inOrderTraversal (árbol):
si árbol:
inOrderTraversal (tree.getLeftChild ())
print (tree.getRoot ())
inOrderTraversal (tree.getRightChild ())
#preorder: avance a la hoja más a la izquierda (obteniendo la raíz en el # subárbol izquierdo), inmediatamente a la derecha, raíz (recursivamente)
def preOrderTraversal (árbol):
si árbol:
print (tree.getRoot ())
preOrderTraversal (tree.getLeftChild ())
preOrderTraversal (tree.getRightChild ())
#postorder: avance a la hoja más a la izquierda, atraviese a la izquierda de la derecha
# subárboles, luego raíz (recursivamente)
def postOrderTraversal (árbol):
si árbol:
postOrderTraversal (tree.getLeftChild ())
postOrderTraversal (tree.getRightChild ())
print (tree.getRoot ())
Suponiendo que conoce los conceptos básicos de cómo se construye BST y la lógica de los recorridos del árbol.