조건문이 많아서 안이쁨
- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
class Node {
private int value;
private Node left;
private Node right;
private boolean visit;
public Node(int value) {
this.value = value;
}
public void post(Node root) {
Stack<Node> stack = new Stack<>();
while(true) {
while(root != null) {
if(!root.visit) {
stack.push(root);
}
root = root.left;
}
if (stack.isEmpty()) {
break;
}
root = stack.pop();
if (root.right != null && !root.right.visit) {
stack.push(root);
}
if (root.left == null && root.right == null) {
System.out.println(root.value);
root.visit = true;
}
else if (root.left == null && root.right.visit) {
System.out.println(root.value);
root.visit = true;
}
else if (root.right == null && root.left.visit) {
System.out.println(root.value);
root.visit = true;
}
if (root.left != null && root.right != null) {
if (root.left.visit && root.right.visit) {
System.out.println(root.value);
root.visit = true;
}
}
root = root.right;
}
}