기술면접 대비 11탄 tree

양진영·2022년 4월 20일
0

오늘은 코더가 아닌 프로그래머가 되기 위해 몰라서는 안돼는 기본중에 기본이라고 불리우는 자료구조에 대해서 공부해보려 한다. 자료구조를 몰라도 일단 기능을 돌아는 가게 만들수있다. 데이터가 어떻게 저장되고 정리되는지 몰라도 api 공장처럼 찍어내는 프로그래밍도 제대로 기능만 돌아가면 되지 왜 자료구조를 알아야 되냐고 나도 나스스로 질문을 하곤 했었다. 하지만 프로젝트를 경험해보고 조금 더 깊게 공부해 보며 느낀것이지만, 처리해야할 데이터나 탐색해야 할 데이터가 적다면 어떻게 해도 돌아갈 것이지만, 데이터의 양이 늘어나면 이전보다 점점 더 최적화와 효율성이 중요시 된다. 이때 효율성을 높히는 방법은 처리하거나 탐색할때 데이터를 어떻게 저장해둬야 더 적은 프로세스로 더 많은 데이터를 더 빠르게 할수 있는가에 대해 원하는 기능에 맞게 데이터를 구조화 해서 저장해두는 방법을 생각하고 공부하는것이다.

오늘은 여러 자료구조중 그래프와 트리에 대해서 알아보고자 한다. 그래프와 트리는 둘다 데이터(노드)간의 관계를 간선으로 정리하는 형태의 자료구조 이지만 이 둘은 많은 부분에서 차이점을 갖는다. 우선 그래프는 네트워크 형태이다. 네트워크 형태라는것은 서로가 연결되어 순환이 가능한 형태의 자료구조를 나타내며 여기서는 루트 노드라고 불리우는 최상위 노드라는 존재가 없다. 그도 그럴것이 계층적인 형태가 아니라 서로가 수평적인 관계를 갖기 때문이다. 반면에 트리는 노드간 계층적인 형태의 관계를 갖는다. 노드들의 가장 정점에 있는 노드를 최상위 노드 또는 루트노드 라고 하며 이 루트 노드로 부터 나뭇가지 처럼 뻗어 나가지만 중요한점은 아래로 뻗어 나가 자식 또는 그보다 아래는 후손노드 라고도 한다.

오늘은 여기 까지만 하고 정리하는 것으로 하겠다. 다음에는 좀더 자세히 그래프 따로 트리 따로 그리고 여기선 다루지 않았지만 이진트리, 이진 탐색 트리 에대해 다뤄보도록 하겠다.

profile
왜? 라는 질문을 중요시하는 서버 개발자입니다

0개의 댓글