Clojure - Arbre binari Z92223


Statement
 

pdf   zip

image

7cm Aquest problema planteja el treball amb arbres binaris.

Penseu un tipus en clojure per guardar arbres binaris de nombres naturals.

Definiu, amb la funció @def@, @t1@ com l’arbre que mostra la figura.

Feu el mateix amb @t2@ i @t3@ tenin en compte que són els seu dos fills.

  1. Feu una funció @size@ que, donat un arbre, retorni la seva talla, és a dir, el nombre de nodes que conté.

  2. Feu una funció @height@ que, donat un arbre, retorni la seva alçada, assumint que els arbres buits tenen alçada zero.

  3. Feu una funció @equal@ que, donat dos arbres, indiqui si són el mateix.

  4. Feu una funció @pre-order@ que, donat un arbre, retorni el seu recorregut en pre-ordre.

  5. Feu una funció @post-order@ que, donat un arbre, retorni el seu recorregut en post-ordre.

  6. Feu una funció @in-order@ que, donat un arbre, retorni el seu recorregut en in-ordre.

  7. Feu una funció @breadth-first@ que, donat un arbre, retorni el seu recorregut per nivells.

  8. Feu una funció @build@ que, donat el recorregut en pre-ordre d’un arbre i el recorregut en in-ordre del mateix arbre, retorni l’arbre original. Assumiu que l’arbre no té elements repetits.

Puntuació

Cada apartat puntua 12,5 punts.

Public test cases
  • Input

    (size t1)
    (height t1)
    (equal t2 t3)
    (pre-order t1)
    (post-order t1)
    (in-order t1)
    (breadth-first t1)
    (post-order (build (pre-order t1) (in-order t1)))
    
    
    

    Output

    7
    3
    false
    (1 2 4 5 3 6 7)
    (4 5 2 6 7 3 1)
    (4 2 5 1 6 3 7)
    (1 2 3 4 5 6 7)
    (4 5 2 6 7 3 1)
    
    
    
  • Information
    Author
    Jordi Petit / Gerard Escudero
    Language
    Catalan
    Official solutions
    Clojure
    User solutions
    Clojure