findall instead of bagof can also help for these cases.
| ?- findall(A, (tree(A, N), branch(N)), As).
As = [n,n1]
yes
See https://lpn.swi-prolog.org/lpnpage.php?pagetype=html&pageid=...