Ejercicios sobre árboles

01.

Crea una función bool isBST(const BinNode *r) const; que dado un puntero al nodo raiz de un árbol binario devuelva true si es un BST, false de lo contrario.

02.

Igual que el ejercicio anterior pero para un árbol binario implementado usando arreglo, i.e. bool isBST(int r) const;.

03.

Crea una función int height(const BinNode *r) const; que dado un puntero al nodo raiz de un árbol binario devuelva su altura. Trátalo con estos casos:

10
        10
       / 
      4
     /
    6
        10
       /  \ 
      4   1
     /   / \
    6   5   7
         \
          3

04.

Estudia la función recursiva isBal en https://repl.it/@rafaelarceupr/BinaryTreeIsBalanced01 y corre a mano un ejemplo como este:

        10
       /  \ 
      4   1
     /   / 
    6   5   
         \
          3

05.

Crea una función bool leafQty(const BinNode *r) const; que dado un puntero al nodo raiz de un árbol binario devuelva la cantidad de hojas que tienen el árbol.

06.

Igual que el ejercicio anterior pero para un árbol binario implementado usando arreglo, i.e. int leafQty(int r) const;.

07.

Crea una función int sumOfAll(const BinNode *r) const; que dado un puntero al nodo raiz de un árbol binario devuelva la sumatoria de los valores de todas los nodos. Por ejemplo, sumOfAll devolvería 25 para el siguiente árbol.

     8
   /   \
  5    10
 /
2 

08.

Crea una función int pairCtr(const BinNode *r) const; que dado un puntero al nodo raiz de un árbol binario devuelva la cantidad de valores pares en el arbol. Por ejemplo, pairCtr devolvería 3 para el siguiente árbol.

     8
   /   \
  5    10
 /
2