The recursive “function”:
{{ define "subpages" }}
{{ if .Pages }}
{{ range .Pages}}
{{ if eq .Kind "section" }}<a href="{{ .Permalink }}">{{ .Title }}</a><br>{{ end }}
{{ template "subpages" . }}
{{ end }}
{{ end }}
{{ end }}
All pages from root sections:
{{ range .Site.Sections }}
<a href="{{ .Permalink }}">{{ .Title }}</a><br>
{{ template "subpages" . }}
{{ end }}
So you can choose the sort method you want (date, weight, etc.) in the range loops (for .Site.Sections and .Pages in subsections).