07.28

신승빈·2022년 7월 28일
0

KGCA 수업

목록 보기
14/128

이진트리

LevelOrder

층 순서대로 순회하는 방식
Queue 사용 = 너비 우선 탐색
분류에 따른 체계 탐색 시 사용(주소 체계, 공간 분할 등)

소멸자에서 Child를 삭제하는 것이 좋은 방법일까?

소멸자에서 객체의 Child를 삭제하게 할 경우 구현은 편함.
소멸자에서 객체의 Child를 건드리지 않을 경우 외부에서 객체를 해제해야 함.
이 둘은 함께 존재해선 안됨.

LinkedList의 경우

LinkedList의 경우 소멸자 내부에서 Link된 다른 객체를 건드리지는 않음.
List의 중간에서 삽입, 삭제가 존재하기 때문
그보다는 Link된 노드의 생성을 다른 노드에서 수행하지 않았기 때문으로 해석(생성된 메모리에 대한 책임이 없음)

이진트리의 경우

마찬가지로 이진트리의 노드를 생성할 때 Child노드를 생성하지는 않음.(Child 메모리에 대한 책임이 없음)
그러므로 원론적으로 이진트리 노드의 소멸자에서 Child 노드의 해제를 수행하지 않는 것이 옳음.

Tree의 Depth

Tree의 Depth가 정해지면 Tree Node의 최개 개수 = 2depth - 1(depth >= 1)

이진트리에서의 파일입출력

트리의 정보를 배열로 저장, 이후 Load과정에서 배열에 저장 후, index를 통해 접근하는 방법이 있음.

Node* _arr[] = new Node*[length];

참고 Visual Studio

출력 디렉토리 변경


프로젝트 폴더를 기준으로 결정됨.

include


$(ProjectDir) 매크로를 통해 프로젝트 폴더를 기준으로 include와 lib할 수 있음

빌드 후 이벤트


md 명령어를 사용하면 존재하지 않는 폴더는 생성하여 복사할 수 있음.

cpp언어 표준과 sdk버전


속성을 통해 cpp의 표준과 sdk버전을 결정할 수 있음
vs2019의 경우 cpp14가 표준.
cpp17, cpp20 역시 지원.

profile
이상을 길잡이 삼아 로망을 추구합니다.

0개의 댓글