Created
May 26, 2023 09:22
-
-
Save henriquesebastiao/ae10362dc740a3ab9dde14be786caafe to your computer and use it in GitHub Desktop.
Implementação de árvore binária em Python.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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