Based on the provided information I can assume that the data is loaded on demand when the expand arrow is clicked.
If my assumption is correct this is expected because the filter can be applied only to the currently available data. Still, when a node is expanded, the filter will be automatically applied to the new data as well. This can be observed in the Dojo example(the MVC behaviour is the same):
If all of the data is available, then the filter should be applied to all nodes regardless of their expand or collapse status, as the filter is performed on the dataSource, not to the visible part of the TreeList.
In case, the described expected results are different in the real application, please provide a fully runnable example, and I will gladly assist.