• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

Level Order Of BinaryTree 질문드립니다.

21.03.24 15:25 작성 조회수 105

1

안녕하세요. 강사님.

Level Order Of BinaryTree 강좌 내용중 궁금한 내용이 있어서요.

맨 처음 아래 코드를 통해 Queue 에 TreeNode 객체를 추가하면

        Queue<TreeNodequeue = new LinkedList<>();
        queue.offer(root);

강좌에 있는 아래의 모양으로 셋팅되는 부분은 이해가 되는데요.

아래 코드의 중간 부분 for 영역에서 가로로 돌아가는지 이해가 되질 않습니다.

        while(!queue.isEmpty()) {
            int size = queue.size();
            List<Integerlist = new LinkedList<>();
            for(int i=0i<sizei++) {
                TreeNode node = queue.poll();
                list.add(node.val);
                if(node.left != null) {
                    queue.offer(node.left);
                }
                if(node.right != null) {
                    queue.offer(node.right);
                }
            }
            result.add(list);
       }

Q1. 어떻게 가로로 순차로 돌아가는 것인지.. 왜 queue.size = 3 이 나오는지도요.

 i=0, 3 
 i=1, 4 -> 5
 i=2, 6 -> 7

Q2. node.left 와 node.right 를 다시 queue.offer 해주고 있는데 이 부분이 어떻게 처리되는지..

번거로우시겠지만 그림으로 설명을 부탁드려도 될까요?

답변 4

·

답변을 작성해보세요.

1

강의 동영상 업데이트 됐습니다~~

즐코딩하세요~

illhumored님의 프로필

illhumored

질문자

2021.03.31

네 강사님. 

먼저, 디테일하게 답변도 달아주시고.. 

미리보기 영상도 같이 업데이트 해주셔서 감사합니다.

강의에서 말씀하신 대로 디버깅 하면서 계속 보다보니 이제 이해가 되었습니다.

queue.offer(root);

이렇게 queue 에 넣으면 TreeNode 객체로 들어가서 size 가 1이 되는건데

left, right 그리고 left.left, left.right 등.. 자식 노드까지 size 로 계산된다고 잘못 생각했었네요.

다시 한 번 디테일한 피드백 주셔서 감사합니다.

1

안녕하세요.

그림을 먼저 올려드릴게요. 따로 설명은 강의로 올리고 알려드리겠습니다.

그림만 보셔도 감이 오실겁니다.

1

제  또다른 강의 "코딩테스트 전 꼭 알아야할개념" 에 큐 부분에 미리보기 문제로 풀어놨습니다 약간 변형된 문제이지만 한번 보시고요

질문 주신 강좌 내용은 그림으로 설명추가하는거 보다
해당 강좌에 그림을 업데이트 할 예정입니다.

오늘 밤/늦어도 내일 업데이트하고 알려드리겠습니다

감사합니다

1

안녕하세요 ~

이 문제는 회사들이 좋아하는 문제입니다

너무 논리적인 문제라 

이 문제는 제 다른 강의에도 있는데 그걸 미리보기로 풀어 놀게요  오늘밤에 해놓고 알려드리겠습니다

그리고 이 강좌에 있는 문제들 업데이트중에 있습니다 우선순위로 업데이트 하겠습니다

감사합니다 즐코딩하세요~