@sateeshreddy You could use sling APIs to do so-
Take a root path
loop the resource and nodes as per your requirement via listchildren, Iterators,hasNode() etc until the leaf node.
use value map object - eg: currentResource.getValueMap()
compare the slingResourceType and read your values.
You could use the querybuilder to get the list of resources using a resource type rather than looping, Is there any particular reason you don't want to use the query builder? You could also index it if needed.