My first impression was that syncbox is right.
Then I remembered one recent project and some solutions in it. It was sort of a news portal, but it also has a lot of static pages (by static I mean Pages, not Posts).
There was actually a lot of pages dedicated to services there (services was also mentioned by syncbox). At first I was trying something along the is_tree() philosophy. Then bad things happened. For your information the structural representation of the tree I had to build:
Services (top level page)
- Service group 1 (second lvl)
-- Service group 1.1 (third lvl)
--- Service 1.1.1 (4th lvl)
--- Service 1.1.2 (4th lvl)
--- Service 1.1.3 (4th lvl)
-- Service group 1.2 (third lvl)
--- Service 1.2.1 (4th lvl)
--- Service 1.2.2 (4th lvl)
-- Service 1.2 (third lvl)
-- Service 1.3 (third lvl)
- Service group 2 (second lvl)
- Service group 3 (second lvl)
- Service group 4 (second lvl)
So the bad things here:
1. Layouts: top level service page, second level service group page, third level service group page and a separate service (no matter what level) page had its own layout
2. Structure: service groups have minor service groups. Still, both, minor and major, groups can have their own services.
The thing here is that _I could have_ used is_tree() if I only had service groups that have services, but if the structure is complex, it is useless and produces a lot of code and if. Hence I went the simple way: I made different page templates and let the user set them. It is much more dynamic that way and requires no coding at all - copy the structure, reshape it and produce another layout.
I don't vote :)