강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

김동현님의 프로필 이미지
김동현

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

5. 이진트리순회(DFS : Depth-First Search)

Node root의 선언 위치

작성

·

238

0

안녕하세요. 문제를 다시 풀던 중 궁금점이 생겨 질문을 남기게 되었습니다. 본 강의에서 Node root를 메인 메서드 밖에 선언하였는데 아래 코드와 같이 

import java.util.*;
class Node{
int data;
Node lt, rt;
public Node(int n){
data = n;
lt = rt = null;
}
}

public class Practice{
public void DFS(Node root){
if(root == null)
return;
else{
DFS(root.lt);
System.out.print(root.data + " ");
DFS(root.rt);
}

}
public static void main(String[] args){
Practice t = new Practice();
Node root = new Node(1);
root.lt = new Node(2);
root.rt = new Node(3);
root.lt.lt = new Node(4);
root.lt.rt = new Node(5);
root.rt.lt = new Node(6);
root.rt.rt = new Node(7);
t.DFS(root);
}
}

Node root를 메인메소드 안에서 선언하여도 정상적으로 작동하는 것 처럼 보였습니다. 

1. 제가 올린 코드처럼 Node root를 메인메서드 안에 선언하는 것이 문제가 되는 부분이 있을까요?

2. 본 강의에서 처럼 Node root를 메인메서드 밖에다 선언하는 특별한 이유가 있나요?

3. 메인메서드 안에 선언하는 것과 밖에 선언하는 것에 차이점이 있나요?

퀴즈

재귀 함수가 자신을 호출할 때, 매개변수, 지역 변수, 복귀 주소 등이 저장되는 메모리 영역의 구조는 무엇일까요?

힙 영역 (Heap area)

스택 프레임 (Stack Frame)

큐 (Queue)

데이터 세그먼트 (Data Segment)

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

저도 root 노드를 메인에서 선언한 것 같은데요. 

김동현님의 프로필 이미지
김동현

작성한 질문수

질문하기