#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int ll
const int maxn = 5e5+ 222;
vector<int>G[maxn];

int fa[maxn][33];
int siz[maxn];
int dep[maxn];
void dfs(int s, int f){
    fa[s][0] = f;
    siz[s] = 1;
    dep[s] = dep[f] + 1;
    for(int i = 1; i < 33; i++){
        fa[s][i] = fa[fa[s][i - 1]][i - 1];
    }
    for(int d : G[s]){
        if(d == f)
            continue;
        dfs(d, s);
        siz[s] += siz[d];
    }
}
int getfa(int x, int d){
    for(int i = 30; i >= 0; i--){
        if(dep[fa[x][i]] >= d)
            x = fa[x][i];
    }
    return x;
}

int n, m;
ll ans[maxn];
int in[maxn];

void solve(){
    int n;
    scanf("%lld", &n);
    for(int i = 0; i < n + 10; i++){
        G[i].clear();
        ans[i] = 0;
        in[i] = 0;
    }
    for(int i = 1; i < n; i++){
        int a, b;
        scanf("%lld %lld", &a, &b);
        G[a].push_back(b);
        G[b].push_back(a);
    }
    dep[0] = -1;
    dfs(0, 0);
    for(int d : G[0]){
        ans[0] += 1ll * siz[d] * (siz[d] - 1) / 2;
    }
    int nowson = getfa(1, 1);
    int sum = 1;
    vector<int>v;
    v.push_back(1);
    for(int d : G[0]){
        if(d == nowson)
            v.push_back(siz[d] - siz[1]);
        else
            v.push_back(siz[d]);
        sum += v.back();
    }
    for(int a : v)
        ans[1] += 1ll * a * (sum - a);
    ans[1] /= 2;

    siz[0] -= siz[nowson];
    //duan dian
    int son[2];
    son[0] = 0;
    son[1] = 1;
    in[0] = 1;
    int nowid = 1;
    while(!in[nowid]){
        in[nowid] = 1;
        nowid = fa[nowid][0];
    }

    for(int i = 2; i <= n; i++){
        if(i == n){
            ans[i] = 1;
            break;
        }
        if(in[i]){
            ans[i] = 0;
            continue;
        }
        //son1 的yan chang
        if(getfa(i, dep[son[1]]) == son[1]){
            ans[i] = 1ll * (siz[son[0]]) * (siz[son[1]] - siz[i]);
            nowid = i;
            while(!in[nowid]){
                in[nowid] = 1;
                nowid = fa[nowid][0];
            }
            son[1] = i;
        }
        else if(getfa(i, dep[son[0]]) == son[0]){
            if(son[0] == 0 && getfa(i, 1) == getfa(1, 1)){
                ans[i] = 1ll * (siz[son[0]]) * (siz[son[1]]);
                break;
            }
            ans[i] = 1ll * (siz[son[0]] - siz[i]) * (siz[son[1]]);
            nowid = i;
            while(!in[nowid]){
                in[nowid] = 1;
                nowid = fa[nowid][0];
            }
            son[0] = i;
        }
        else{
            ans[i] = 1ll * (siz[son[0]]) * (siz[son[1]]);
            break;
        }
    }
    for(int i =0 ; i <= n; i++){
        printf("%lld ", ans[i]);
    }
    puts("");
}
signed main(){
   // freopen("in.txt", "r", stdin);
    int T = 1;
    cin>>T;
    while(T--)
        solve();
}
