Вы можете сделать это, многократно выполняя обход дерева по порядку при печати только тех узлов на указанном уровне. Однако это не является строго постоянной памятью, так как рекурсия использует стек вызовов. И это супер неэффективно. Как O (n * 2 ^ n) или что-то.
printLevel = 1;
while(moreLevels) {
moreLevels = printLevel(root, 1, printLevel);
printLevel++;
}
boolean printLevel(Node node, int currentLevel, int printLevel) {
boolean moreLevels = false;
if(node == null) {
return(false);
}
else if(currentLevel == printLevel) {
print the node value;
}
else {
moreLevels |= printLevel(node.leftChild, currentLevel + 1, printLevel);
moreLevels |= printLevel(node.rightChild, currentLevel + 1, printLevel);
}
return(moreLevels);
}