Well, here's the answer I developed, in case anyone else has to deal with this. Sure there's a better way to do this etc.
function walk_tree(node, parent_stem, at_root ) {
if ( node == null || node == undefined || $(node) == undefined )
return ;
var i = 0 ;
var serialized_tree = '' ;
var stem = '' ;
// loop through siblings
do {
// build up the serialized statement for this node
stem = parent_stem + '[' + i + ']' ;
serialized_tree += (at_root ? '' : '&' ) + stem + '[id]=' + $(node).identify().gsub('page_','')
// if node has children, then recurse...
if ( $(node).down('li') != undefined )
serialized_tree += walk_tree($(node).down('li'), stem, false) ;
// carry on finding siblings
node = $(node).next('li') ;
i++ ;
} while ( $(node) != undefined ) ;
return(serialized_tree) ;
} ;