inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

더 개발자, 인터뷰 가이드

트리 문제 1

후위탐색 반복문

314

iron2
0

조건문이 많아서 안이쁨
 
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 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;
}
}

반복문

답변 0