Могу предложить такой вариант
<script type = "text/javascript">
window.onload = function(){
function hasSubs(li){
var subs = [];
for(var i = 0, il = li.childNodes.length; i < il; i ++){
if(li.childNodes[i].nodeName == "UL"){
subs[subs.length] = li.childNodes[i];
}
}
return subs;
}
function isLI(node){
return node.nodeName == "LI";
}
function count(ul){
var childs = ul.childNodes;
for(var i = 0, il = childs.length; i < il; i ++){
if(isLI(childs[i])){
var subs = hasSubs(childs[i]);
if(subs.length){
for(var j = 0, jl = subs.length; j < jl; j ++){
count(subs[j]);
}
}else{
alert("item" + childs[i].innerHTML);
}
}
}
}
var outer = document.getElementById("menu");
count(outer);
}
</script>
<ul id = "menu">
<li>1</li>
<li>2</li>
<li>3</li>
<li>
<ul>
<li>4.1</li>
<li>4.2</li>
<li>4.3</li>
<li>
<ul>
<li>4.4.1</li>
<li>4.4.2</li>
<li>4.4.3</li>
<li>4.4.4</li>
</ul>
</li>
</ul>
</li>
<li>5</li>
</ul>