This is probably hard to fix when looked at narrowly, because of the "URL is always 1 step behind" JSF issue. The real issue is, however, that the path of the cookie should be the webapp context, like JSESSIONID has, and not the "current URL directory". The viewId could then be made part of the cookie name, to make it unique.
(Or, for an even more bold suggestion: we should get writ of the cookies, and store the state in a hidden field. Cookies can be used for storing state across requests, but for tree2 that is exactly what we don't want: we want to get the info to the server, let the server define a new state, and then get that back.)