Skip to content

Instantly share code, notes, and snippets.

@henriquesebastiao
Created May 26, 2023 09:22
Show Gist options
  • Save henriquesebastiao/ae10362dc740a3ab9dde14be786caafe to your computer and use it in GitHub Desktop.
Save henriquesebastiao/ae10362dc740a3ab9dde14be786caafe to your computer and use it in GitHub Desktop.
Implementação de árvore binária em Python.
class Node:
""" Classe que define as características do nó da árvore"""
def __init__(self, value: int):
self.left = None
self.right = None
self.value = value
class Tree:
""" Classe que define a árvore binária de busca"""
def __init__(self):
self.root = None
def get_root(self):
""" Método que retorna a raíz da árvore"""
return self.root
def add(self, valor: int):
""" Método que adiciona um valor na árvore"""
if self.root is None:
self.root = Node(valor)
else:
self._add(valor, self.root)
def _add(self, valor: int, node: Node):
""" Método recursivo que adiciona um valor na árvore"""
if valor < node.value:
if node.left is not None: # Se o nó esquerdo não estiver vazio chama o método recursivamente
self._add(valor, node.left)
else: # Se o nó esquerdo estiver vazio adiciona o valor
node.left = Node(valor)
else:
if node.right is not None: # Se o nó direito não estiver vazio chama o método recursivamente
self._add(valor, node.right)
else: # Se o nó direito estiver vazio adiciona o valor
node.right = Node(valor)
def find(self, valor: int):
""" Método que busca um valor na árvore"""
if self.root is not None:
return self._find(valor, self.root)
else:
return None
def _find(self, valor: int, node: Node):
""" Método recursivo que busca um valor na árvore"""
if valor == node.value:
return node
elif valor < node.value and node.left is not None:
return self._find(valor, node.left)
elif valor > node.value and node.right is not None:
return self._find(valor, node.right)
def del_tree(self):
""" Método que deleta a árvore""" # Garbage collector fará isso por nós.
self.root = None
def print_tree(self):
""" Método que imprime a árvore"""
if self.root is not None:
self._print_tree(self.root)
def _print_tree(self, node: Node):
""" Método recursivo que imprime a árvore"""
if node is not None:
self._print_tree(node.left)
print(str(node.value) + ' ')
self._print_tree(node.right)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment