Let’s say I have a class Tree that “has” zero or more Branches, and each Branch “has” zero or more Fruit, etc.
Let’s say I want to create one object that allows you to treat all of that data as a single object, so a user of my interface wouldn’t say “Tree, iterate through all of your branches. For each branch, add how many fruit there are to a total.” but instead would just say “Tree, how many fruit do you have?” or “How many Apples do you have?”
What kind of object is this? What design pattern is applicable?
That is precisely the Composite Pattern:
As an aside, the use of the Composite pattern does ineed allow you to easily use a Visitor to act upon the nodes of your tree.