#include<stdio.h>
#include<vector>
using namespace std;
vector<int> graph[100019];
int mvc[100019];
int mvc_tree(int v)
{
mvc[v] = -1;
if(graph[v].size() == 1)
return 0;
int x = 0;
for(int i = 0; i < graph[v].size(); ++i)
if(!mvc[graph[v][i]])
{
x += mvc_tree(graph[v][i]);
if(mvc[v] < 1 && mvc[graph[v][i]] < 1)
++x,
mvc[v] = 1;
}
return x;
}
int main()
{
int t, n, a, b, i;
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
for(i = 1; i <= n; ++i)
graph[i].clear();
for(i = 1; i < n; ++i)
{
scanf("%d%d", &a, &b);
graph[a].push_back(b);
graph[b].push_back(a);
mvc[i] = 0;
}
mvc[n] = 0;
if(n < 3)
{
puts("1");
continue;
}
for(i = 1; i <= n; ++i)
if(graph[i].size() > 1)
break;
printf("%d\n", mvc_tree(i));
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gZ3JhcGhbMTAwMDE5XTsKaW50IG12Y1sxMDAwMTldOwoKaW50IG12Y190cmVlKGludCB2KQp7CgltdmNbdl0gPSAtMTsKCWlmKGdyYXBoW3ZdLnNpemUoKSA9PSAxKQoJCXJldHVybiAwOwoJaW50IHggPSAwOwoJZm9yKGludCBpID0gMDsgaSA8IGdyYXBoW3ZdLnNpemUoKTsgKytpKQoJCWlmKCFtdmNbZ3JhcGhbdl1baV1dKQoJCXsKCQkJeCArPSBtdmNfdHJlZShncmFwaFt2XVtpXSk7CgkJCWlmKG12Y1t2XSA8IDEgJiYgbXZjW2dyYXBoW3ZdW2ldXSA8IDEpCgkJCQkrK3gsCgkJCQltdmNbdl0gPSAxOwoJCX0KCXJldHVybiB4Owp9CgppbnQgbWFpbigpCnsKCWludCB0LCBuLCBhLCBiLCBpOwoJCglzY2FuZigiJWQiLCAmdCk7Cgl3aGlsZSh0LS0pCgl7CgkJc2NhbmYoIiVkIiwgJm4pOwoJCWZvcihpID0gMTsgaSA8PSBuOyArK2kpCgkJCWdyYXBoW2ldLmNsZWFyKCk7CgkJZm9yKGkgPSAxOyBpIDwgbjsgKytpKQoJCXsKCQkJc2NhbmYoIiVkJWQiLCAmYSwgJmIpOwoJCQlncmFwaFthXS5wdXNoX2JhY2soYik7CgkJCWdyYXBoW2JdLnB1c2hfYmFjayhhKTsKCQkJbXZjW2ldID0gMDsKCQl9CgkJbXZjW25dID0gMDsKCQlpZihuIDwgMykKCQl7CgkJCXB1dHMoIjEiKTsKCQkJY29udGludWU7CgkJfQoJCWZvcihpID0gMTsgaSA8PSBuOyArK2kpCgkJCWlmKGdyYXBoW2ldLnNpemUoKSA+IDEpCgkJCQlicmVhazsKCQlwcmludGYoIiVkXG4iLCBtdmNfdHJlZShpKSk7Cgl9CglyZXR1cm4gMDsKfQ==