Come determinare se due alberi (non necessariamente binari) sono isomorfi

0

Si dice che due alberi ordinati T 'e T' 'sono isomorfi se si verifica una delle seguenti condizioni:

◦ sia T 'sia T' 'consistono di un singolo nodo

◦ sia T 'sia T' 'hanno lo stesso numero k di sottoalberi, e l'ith sotto-albero di T' è isomorfo al sotto-albero di T '', per i = 1, 2, ..., k.

Ho tentato di trovare il seguente algoritmo per gli alberi binari , tuttavia la domanda non dice nulla sull'albero binario. Che tipo di algoritmo può determinare se due alberi non binari sono isomorfi o no?

bool isomorphic(node p, node r)
     if (p = null & r = null) return true
     if (p = null || r = null) return false //they don’t have the same number of subtrees
     else return (isomorphic(p->leftchild, r->leftchild) && isomorphic(p->rightchild, r->rightchild) || (isomorphic(p->leftchild, r->rightchild) && isomorphic(p->rightchild, r->leftchild))
    
posta user11892 10.03.2015 - 06:52
fonte

1 risposta

1

Cosa ha detto Giorgio. Basta cambiare la funzione in modo che itera su un elenco di bambini invece di controllare solo un figlio sinistro e uno destro (supponendo che sia così che viene implementato l'albero non binario a cui sei interessato).

    
risposta data 10.03.2015 - 08:38
fonte

Leggi altre domande sui tag