```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
const maxN = 200005
var (
n int
g [][]int
dep []int
sz []int
val []int
vis []bool
)
func dfs(u, p int) {
sz[u] = 1
for _, v := range g[u] {
if v == p {
continue
}
dep[v] = dep[u] + 1
dfs(v, u)
sz[u] += sz[v]
}
val[u] = dep[u] - (sz[u] - 1)
}
func main() {
in := bufio.NewReader(os.Stdin)
fmt.Fscan(in, &n)
g = make([][]int, n+1)
for i := 0; i < n-1; i++ {
var u, v int
fmt.Fscan(in, &u, &v)
g[u] = append(g[u], v)
g[v] = append(g[v], u)
}
dep = make([]int, n+1)
sz = make([]int, n+1)
val = make([]int, n+1)
dfs(1, 0)
arr := make([]int, 0, n)
for i := 1; i <= n; i++ {
arr = append(arr, val[i])
}
sort.Slice(arr, func(i, j int) bool { return arr[i] > arr[j] })
pref := make([]int64, n+1)
for i := 1; i <= n; i++ {
pref[i] = pref[i-1] + int64(arr[i-1])
}
out := bufio.NewWriter(os.Stdout)
for k := 1; k <= n; k++ {
ans := pref[k]
fmt.Fprint(out, ans)
if k < n {
fmt.Fprint(out, " ")
}
}
fmt.Fprintln(out)
out.Flush()
}
```