Я бы сделал немного по другому:
id указаля бы для списка вцелом а не для элемнетов списка, тоесть это:
<ul>
<li id="q1" class="h">Деверяшка 1</li>
<li id="q2" class="h">Деверяшка 2</li>
</ul>
заменил на это:
<ul id="q">
<li class="h">Деверяшка 1</li>
<li class="h">Деверяшка 2</li>
</ul>
и указал бы:
<ul class="list" id="list">
можно даже в ЦСС переписать из класса на айдишник
а перед разворачиванием дерева написал бы такой код:
var i,Items=document.getElementById("list").getElementsByTagName("ul");
for(i=0;i<Items.length;i++) Items.style.display="none";
Ещё вариант, если всегда будет открыто только одна ветка, то можно сохранять её id и потом скрывать её и всех родителей, это будет быстрее выполнятся если список слишком большой будет.