[자료구조] 이진 트리의 이해
연결 리스트는 대표적인 선형 구조의 예이다.
오늘 포스팅할 이진 트리는 비선형 구조의
대표적인 예라 할 수 있겠다.
일단 이진 트리는
1. 배열 기반
2. 연결 리스트 기반
으로 나눌 수 있는데 연결 리스트 기반으로 알아보자.
이진 트리에 들어가기 앞서 알아둘 내용은
1. 2개의 자식 노드를 가질 수 있다는 점과
2. 하나의 노드도 이진 트리라는 점이다.
자식 노드가 없는 노드는 공집합 노드를 가지게 되는데
자식이 하나 혹은 하나도 없는 노드 또한 이진 트리라고
기대할 수 있게 하기 위함이라고 한다.
이진 트리를 표현한 구조체
헤더 파일에 선언된 함수들
구현
예시
짚고 넘어가야할 부분
구현 부분의 MakeLeftSubTree() 함수를 보면
추가하려는 자리에 기존 데이터가 있으면
삭제하고 대체하게 되는데 이 과정에서
삭제하려는 노드의 서브트리가 존재하게 되면
메모리 누수로 이어지게 된다.
이 해결책으로 순회라는 방법이 있는데
다음 포스팅에 계속 이어 가보도록 하겠다.
이진 트리를 이해하기 위해 간단한 구현을 해보았다.
앞으로 이진 트리에 대한 어마어마한 내용이 남아 있기 때문에
꼭 마스터 하고 넘어가도록 하자.
'C, 자료구조' 카테고리의 다른 글
[자료구조] 이진 트리의 순회(Traversal) (2) (0) | 2017.04.13 |
---|---|
[자료구조] 이진 트리의 순회(Traversal) (1) (0) | 2017.04.13 |
[자료구조] 연결 리스트의 이해(3) (0) | 2017.04.05 |
[자료구조] 연결 리스트의 이해(2) (0) | 2017.04.02 |
[자료구조] 연결 리스트의 이해(1) (0) | 2017.03.29 |