Skip to content

Instantly share code, notes, and snippets.

@everaldo
Created August 7, 2015 02:06
Show Gist options
  • Save everaldo/20aed450d33b7b47a81c to your computer and use it in GitHub Desktop.
Save everaldo/20aed450d33b7b47a81c to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
class Node:
def __init__(self, value):
self.value = value
def __str__(self):
return str(self.value)
def __lt__(self,other):
return (self.value < other)
def __le__(self,other):
return(self.value <= other)
def __gt__(self,other):
return(self.value > other)
class Arvore:
def __init__(self, node, arvore_esquerda, arvore_direita):
self.node = node
self.arvore_esquerda = arvore_esquerda
self.arvore_direita = arvore_direita
def __str__(self):
return self.arvore_esquerda.__str__() + " " + \
self.node.__str__() + " " + self.arvore_direita.__str__()
def eh_vazia(self):
return False
def vazia():
return ArvoreVazia()
@classmethod
def solo(self, node):
return Arvore(node, self.vazia(), self.vazia())
def insere(self, node):
if node < self.node:
if self.arvore_esquerda.eh_vazia():
self.arvore_esquerda = Arvore.solo(node)
else:
self.arvore_esquerda.insere(node)
else:
if self.arvore_direita.eh_vazia():
self.arvore_direita = Arvore.solo(node)
else:
self.arvore_direita.insere(node)
class ArvoreVazia:
def __str__(self):
return ""
def eh_vazia(self):
return True
arvore = Arvore.solo(Node(8))
print(arvore)
arvore.insere(Node(1))
arvore.insere(Node(4))
arvore.insere(Node(12))
arvore.insere(Node(10))
arvore.insere(Node(10))
print(arvore)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment