• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

list 질문입니다

21.02.28 17:00 작성 조회수 91

2

제가 자바에 익숙하지 않아서

List<List<Integer>> result = new ArrayList<>(); 

이 부분이 잘 이해 안되는데 list안에 list를 선언 한건가요?

그리고 

class TreeNode {

int val;

TreeNode left, right;

TreeNode(int x) {

this.val = x;

}

}

이 부분에서 left,right는  요소인거 같은데 

new로 root 객체 선언해서 만들고 그 요소로 접근해서 2,3넣고 left.left 로 4 넣고 이렇게 진행 하는게 맞는건가요?(틀렸다는게 아니라 몰라서 물어봅니다.) 그럼 계속 내려갈떄마다 객체선언한 root 뒤에 left,right로 내려가고 left,right로 접근해서 할당이 가능한지도 궁금하네요. 제가 잘 몰라서 .. 답변해주시면 감사하겠습니다.

답변 1

답변을 작성해보세요.

1

안녕하세요~~

질문주신 내용 답변입니다

1. List<List<Integer>> result = new ArrayList<>(); 

이 부분이 잘 이해 안되는데 list안에 list를 선언 한건가요?

=> 네 맞습니다. 이런식으로 생길걸 담습니다. 문제에 많이 나옵니다 .익히세요~

[[1], [2,3],[4,5],[6,7,8,9,10]]

기본적으로 리스트를 만들고 그 안에 리스트가 있는거죠

2. 두번째 질문은 아래 부분을 말하신거 같은데요

TreeNode root = new TreeNode(1);

root.left = new TreeNode(2);

root.right = new TreeNode(3);

root.left.left = new TreeNode(4);

root.left.right = new TreeNode(5);

TreeNode라는 클래스를 만들었어요.

그안에는 left, right가 있는데 걔네들도 TreeNode 타입의 클래스입니다.

동급입니다.

이게 이해가 어려우시면 예를들어 볼게요

root(할아버지) 가 있어요, TreeNode (우씨 가문입니다)

root(할아버지)의 자식들이 있어요 left, right는 TreeNode (우씨 가문입니다)

root.left(아빠) = new TreeNode(2); 이름이 2

root.righ(큰아빠) = new TreeNode(3); 이름이 3

root.left(아빠) 가 있어요 자식들이 있어요 left, right

root.left.left(나) = new TreeNode(4);

root.left.right(동생) = new TreeNode(5);

이걸 역순으로 빼낼때 어떻게 뺄까요. 한세대씩 빼네는 겁니다. Queue에 한세대를 담고

그 다음세대를 빼고 , 그 다음세대를...

 for문으로 빼네는거여요