This would require either customization of the tree widget or manipulation of the data in the tree via a service. The true way to make it lazy load would be a widget modification but you can also achieve it by building the tree data structure as you select the nodes in the tree. You can initially just return the top one or two levels of the tree from you service. You can then use the selected rows changed event from that service to go back and load more of the tree data when a new node is clicked.
This would require some logic in the service to determine what was already loaded in your data structure and what needed to be added.
Hint: you will need to use a session parameter to hold the tree structure and update that value from your service (session parameters are accessible from both the mashup and platform services).