Making a branch-and-bound algorithm more efficient for a large input
It isn't clear if you are asking about time or memory efficiency.  If you care more about memory, then it would be best to traverse the tree.  If you care more about time, then it would be best to copy and modify both lists at each node.  However, there are more than two alternatives.  You could store a single number at each node, which identifies the items in the knapsack.  For example, the binary number 10110 would denote the first, third, and fourth objects as being in the knapsack.

I don't want to do your homework for you, and you didn't ask me to, but I also recommend considering a more memory efficient DP approach if you haven't already.  Good Luck!