Вместо того, чтобы возвращать результаты, как вы, они позволяют пользователю передавать функцию, которая проходит каждый узел при его обходе.
Попробуйте, например:
obj.traverseBF(node => console.log(node))
Или просто
obj.traverseBF(console.log)
Должно работать так же. console.log
дается каждому узлу для использования в том виде, в котором он найден.
Возможно, это более общее назначение. Если дерево было большим, накопление всех результатов в списке может привести к потере памяти, если пользователю не нужны все результаты сразу.
Если пользователь хочет собрать список, он может передать функция, которая добавляет к списку, над которым закрывается функция:
nodes = [];
obj.traverseBF(node => nodes.push(node))
console.log(nodes)