その一部は、バイナリツリーを順番にトラバースする非再帰的な方法を実装する必要があることです。私はちょっと立ち往生しています。これが私がこれまでに持っているものです:
public void inorder(BinaryTree v) {
Stack<BinaryTree> stack = new Stack<BinaryTree>();
stack.push(v);
System.out.println(v.getValue());
while(!stack.isEmpty()) {
while(v.getLeft() != null) {
v = v.getLeft();
stack.push(v);
System.out.println(v.getValue());
}
while(v.getRight() != null) {
v = v.getRight();
stack.push(v);
System.out.println(v.getValue());
}
stack.pop();
}
}
私はそれが私の木の左側だけを印刷することに気づきました、例えば
A
/ \
B C
/ \ / \
D E F G
/ \
H I
/ \
J K
与えるA B D H J