트리는 말 그대로 나무의 가지모양을 닮은 자료구조입니다. 나무가지를 뒤집어 놓고 생각해보면 부모 줄기에서 자식 가지가 갈라지고, 그 자식 가지는 또 다른 자식 가지들로 갈라집니다. 이렇게 하나의 부모와 여러개의 자식의 연결을 모델링한 것을 트리(Tree)라고 합니다.
트리는 실제 생활에서도 흔히 볼 수 있는 데이터 구조입니다. 가족관계, 조직도, 행정구역 등이 모두 트리로 모델링될 수 있습니다.
트리는 지금까지 배워온 연결리스트, 배열, 스택, 큐와 달리 비선형 자료구조입니다. 즉 앞과 뒤만으로 설명할 수 없는 고차원의 자료구조입니다. 따라서 비선형 구조만의 독특한 동작과 개념들이 있습니다. 대표적으로 트리의 노드 순서를 매기는 순회(Traversal)를 들 수 있습니다.
이번 장에서는 트리의 기본적인 개념, 그리고 트리를 어떻게 구현할 수 있는지를 알아보고, 트리 중에서도 가장 단순한 형태인 이진 트리를 이용하여 수식을 모델링하는 방법을 알아 봅니다.
강의 파일
강의 동영상
7.0 트리 - 시작 : 연결리스트의 확장 개념이라 할 수 있는 트리에 대해 배워봅니다. 어떤 내용을 배울지 확인합니다.
7.1 트리의 개념 : 트리가 무엇인지 예를 통해 알아보고, 트리에서 사용되는 용어들에 대해 알아봅니다.
7.2 이진 트리의 개념 : 트리 중에서 자식이 최대 두개인 트리를 이진트리라고 합니다. 이진트리는 트리 중에서 가장 많이 쓰입니다. 이 이진트리의 속성에 대해 배워봅니다.
7.3 이진 트리의 구현 : 연결리스트를 이용하여 트리를 구현하는 방법을 자세히 알아봅니다.
7.4 트리의 순회 : 트리는 비선형구조여서 노드를 나열하는 순서가 여러가지일 수 있습니다. 트리의 노드를 빠짐없이 방문하는 여러가지 방법을 알아보고 이들을 구현하고 실제로 돌려봅니다.
7.5 수식 트리 : 수식의 연산자는 두개의 항을 가지기 때문에 이진트리로 모델링할 수 있습니다. 수식을 트리로 모델링하면 순회 방법에 따라 수식의 표기법을 쉽게 변경하거나 연산을 할 수 있습니다. 이에 대해 알아봅니다.
7.6 수식 트리의 구현 : 앞서 수식트리의 개념에 대해 살펴 보았으니, 이제 실제로 C++로 구현하고 돌려봅니다.
7.9 트리 - 결론 : 지금까지 배워 온 트리에 대해 정리하는 시간을 가져 봅니다.
관련글 |
- C++로 배우는 알고리즘
- 이진트리의 종류에 대하여 (오류 수정)
- 6장 : 스택과 큐
- 8장 : 재귀 호출
피드 구독하기:
댓글 (Atom)
인기글
-
언젠가부터 내 스마트폰에서 용량이 부족 하다면서 계속 알림이 떴다. 저가폰이라 내부저장소가 16GB 밖에 되지 않았지만, 추가로 마이크로SD 카드 16GB를 달았는데도 그렇다. 안드로이드가 앱을 설치하고 필요한 데이터를 저장하는 곳은 특별히 지정하...
-
사람들은 메이드인 차이나라 그러면 업신여기는 경향이 있지만, 요즘 웬만한 제조물품들은 중국도 꽤나 잘 만든다. 아니 샤오미나 팍스콘을 보면 꽤나 잘 만드는 정도가 아니라 아주 잘 만든다. 중국이 세계의 공장이 되면서 미국도 그렇고, 우리나라도 그렇...
-
나는 무려 10년이 된 Java 프로젝트를 여러개 관리하고 있는데, Netbeans와 Ant 기반의 개발/빌드 환경을 사용한다. Netbeans는 Sun이 Oracle로 넘어간 뒤에 Apache 재단으로 넘어가면서 개발 동력이 많이 떨어져 있다...
댓글 없음:
댓글 쓰기