root 노드 아래를 중괄호로 나누는 이유가 궁금합니다.
527
작성한 질문수 5
안녕하세요
![]()
이 코드에 있는 중괄호는 root를 생성하고 동시에 Data값을 "R1개발실"이라고 초기화 해주는 이니셜라이저라는 것 까지는 이해했는데요

그밑에 다시 중괄호를 열어서 그 안에 node를 생성한 이유를 잘 모르겠습니다.
아래와 같이 중괄호 없이 실행해봐도 root의 children으로 node가 들어가는 것은 같던데 트리구조를 나타내기위해 쓰는 건가요?

답변 5
3
node라는 이름은 우리가 보기 편하라고 이름을 지어준거지만,
사실은 스택 메모리 어딘가에 위치해 있습니다.
(컴파일 후에는 rbp-0x10와 같은 스택 주소를 나타내는 코드로 치환됨)
TreeNode<string> 인스턴스는 Heap 영역에 올라가고,
node라는 바구니에는 해당 인스턴스의 주소(참조)가 들어가 있는 상태입니다.
또한 node라는 바구니가 { } 범위 밖이라서 더 이상 유효하지 않다면,
node 변수는 더 이상 사용 불가능하지만 객체가 꼭 사라지는 것은 아닙니다
(0x100 주소를 다른 곳에서 참조한다면, 살아남겠죠)
node.Children.Add(new ~~)로 이름없이 실시간으로 인스턴스를 밀어넣으면
새로 만들어진 객체의 주소가 Children 리스트에 들어가게 됩니다.
리스트도 참조 타입이니 그냥 주소를 들고 있는데 (아래에서 0x200)
그 주소를 타고 가면 동적으로 생성한 배열이 있을테고 거기에 방금 생성한 Node의 주소가 하나씩 있겠죠!
결국 참조값은 그냥 주소를 들고 있는 바구니라고 생각하면 이해하기가 수월합니다!
2
특별히 어떤 문법적인 의미가 있는 것은 아니고,
묶어서 보기 좋게 관리하고 싶어서 그런겁니다.
그리고 { } 를 안 쓰면 같은 이름을 재사용하지 못하니
TreeNode<string> node에서 node 이름을 바꾸던가
다음에 등장할 땐 TreeNode<string> 부분을 떼어야 하는데,
그 처리를 하기 싫어서 그냥 저렇게 해준겁니다.
결론 : 아무 의미없음
1
이부분에 관해서 한가지만 더 질문을 드리고 싶습니다
이 강의의 다른 질문에서
변수의 이름은 사람에게나 의미가 있지 로우 레벨에서 컴파일된 뒤로는 주소로 치환되기 때문에 컴퓨터에게 의미가 있는건 아니라고 하셨잖아요?
이 코드들을 보면 괄호 root를 만들고나서 그 안에 node라는 동일 이름으로 3가지 TreeNode<string> 클래스의 인스턴스가 생성되고, 이름을 재사용하기 위해서 { }로 구분해줬구요
이때, 이전 답변의 표현을 빌리자면, List<TreeNode<T>> 클래스의 프로퍼티 Children이 List이고, 이 List에 node 라는 이름의 3개의 인스턴스가 저장이 됩니다. 이 떄 저 이름이 같은건 아무런 의미가 없죠? 그냥 단순히 바구니의 이름이 똑같을 뿐 컴퓨터 내부에선 다른 인스턴스로 구분이 되는거죠?
게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다
0
171
2
글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들
0
88
1
NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요
0
66
1
parent를 Pos타입으로 만든 이유
0
74
1
콘솔창에 격자가 안나옴 미로 생성 X
0
133
1
격자 생성 안됨 무한루프
0
114
1
BFS 질문
0
143
2
격자 무한 출력
0
167
2
A* 의 PriorityQueue 관련 질문입니다
0
155
2
vscode에서 원그리기
0
180
1
환결설정 강의 원 그리기
0
122
1
15-17분
0
87
1
3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?
0
141
2
동적 배열 관련 질문입니다!
0
209
1
Big-o 표기법에서 시간 복잡도
0
167
1
7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다
0
151
1
트리구현연습 강의 질문있어요
0
142
1
창은 뜨는데 맵이 나타나지 않아요.
0
175
1
Ctrl F5 하면 나오는 창은 어디서 설정할까요??
0
271
1
void CalcPathFromParent(Pos[,] parent)에 대해서
0
202
2
NullReferenceException예외가 발생했을때 어떻게 해야하나요?
0
229
1
[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제
3
311
2
오른손 법칙에서 플레이어 점이 안 움직입니다
0
245
2
맵 만들기 오류
0
179
1





