Your solution is asymmetric with the operation of the prefix traversal order. In prefix traversal the failure of the boolean operation only terminates the recursion in the tree below the current voxel, whereas the entire recursion is aborted in the postfix traversal order if you propagate up the result from the recurseNodeWithPostOperation. I suggest that the result of the operation not bubble up, and only terminate the visitation of the remaining child voxels.