tree data structure

Duncan Booth duncan at
Fri Sep 6 09:12:31 EDT 2002

Padraig Brady <Padraig at> wrote in
news:Us1e9.2865$cP3.6131 at 

>> assert result==('L0', [('S2', [('S0', [('Q1', [])]), ('S1', [('Q2',
>> [])]), ('S3', [])])])
> It certainly does!
> Just one thing...Why use lists instead of tuples?

Specifically because you can't append to tuples, but you can append to a 

However, a general rule of thumb is to use tuples where you want a record 
(but don't want the overhead of a full-blown class). So each node here is a 
record with the fields name,children. Use a list where you want to store a 
collection of unknown length: so a list is appropriate for the children.

Note that neither your original list, nor the code I used actually force 
this to be a tree, you could equally well have a graph with or without 
cycles. You will find it impossible to represent a graph containing cycles 
if you use tuples throughout.

Duncan Booth                                             duncan at
int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?

More information about the Python-list mailing list