# -*- coding: utf-8 -*- """ Created on Wed Dec 16 16:07:33 2020 @author: Studente """ class Nodo: def __init__(self, value, sx=None, dx=None): self.value = value self.sx = sx self.dx = dx def __repr__(self): return self.print_tree(i=1) def print_tree(self,i=1): stringa = "\t"*i + f'{self.value}' if self.sx: stringa += "\n\t" + "\t"*i + self.sx.print_tree(i+1) else: stringa += "\n\t" + "\t"*(i+1) + "None" if self.dx: stringa += "\n\t" + "\t"*i + self.dx.print_tree(i+1) else: stringa += "\n\t" + "\t"*(i+1) + "None" return stringa import random def genera_albero(n, a,b): ''' Funzione RICORSIVA (o che usa una funzione ricorsiva) che genera un albero binario con n nodi casuale, in cui ogni valore รจ compreso fra a e b ''' if n == 0: return None tree = Nodo(random.randint(a,b)) n = n-1 tree.sx = genera_albero(n//2 + n%2, a, b) tree.dx = genera_albero(n//2, a, b) return tree