728x90
반응형

이진트리 3

[C언어] 자료구조 - Tree 트리 순회,기본연산 -3

트리에 대해 적당히 알아보았고 이제 기본함수를 알기 전에 연결리스트로 트리를 구성했기 때문에 우선 순회라는 것을 알아야하는데 순회라는 것은 트리에 속하는 모든 노드를 한 번 씩 방문한다는 것으로 방문해서 데이터를 목적에 맞게 처리하기 위함이다. 선형 자료구조에서는 순회방법이 단순하지만,, 얘는 알다시피 선형자료구조가 아니기 때문에 다른 방식이다. 아무튼 이진트리의 순위에는 4가지정도가 있다. 여기서는 3가지만 하겠다. 1. 전위 순회 VLR 2. 중위 순회 LVR 3. 후위 순회 LRV 4. 레벨순회 V는 value라고 보면된다. 자료를 의미한다. 우선 전위순회부터 알아보자. 스크립트를 먼저 보자면 void preorder(TNode *n){ if(n != NULL){ // 루트를 가르키는 것이겠다. p..

[C언어] 자료구조 - Tree 트리 구현 -2

저번엔 트리의 성질, 개념에 대해 알아보았고 이번에는 구현을 어떻게 할지? 그리고 어떠한 기본연산을 할지? 알아보겠다. 뭐 기본적으로 삽입, 삭제, 탐색이 있을건데 이게 자료구조가 선형적인 구조가 아니라서 삽입과 삭제에는 일반적으로 하는 연산이 아닌 뭔가 다른게 있다. 우선 이진트리를 구현하는데에는 2가지가 있는데 1. 배열, Array 2. Linked List, 연결리스트 1. 배열, Array 배열로 이진트리를 구성할 때는 높이에 따라 배열의 크기가 정해지는데 즉 h의 높이를 가지고 있으면 2^h-1 크기의 배열은 있어야 노드를 다 넣을 수 있겠지? 그렇지만 트리의 넘버링(numbering)을 1부터 시작하니까 배열의 인덱스랑 트리 넘버를 맞춰주려면 0번째 인덱스는 사용하지 않는게 더 눈에 잘들어오..

[C언어] 자료구조 - Tree 트리 -1

트리에 대해서 알아보자. 트리는 계층적인 구조(hierarchical structure)로서 선형이 아닌 구조를 띄고 있다. 선형이 아니라는 것은? 선형보다는 삽입,삭제가 쉽지 않음을 의미한다. 그렇지만 그럼에도 쓰는 이유에는 장점이 커서 그렇다. 트리는 말 그대로 나무를 뒤집어놓은 모양과 비슷하다고 해서 붙혀진 이름이다. 뭐 이런 형식으로 저장해놓은 것이다. 우선 용어부터 정리하고 가자면 –노드(node) : 트리의 구성요소 –루트(root) : 부모가 없는 노드(A) –서브트리(subtree) : 하나의 노드와 자손들로 이루어짐 –단말노드(terminal) : 자식이 없는 노드(A,B,C,D) –비단말노드 : 자식을 가지는 노드(E,F,G,H,I,J) –자식, 부모, 형제, 조상, 자손 노드 : 내 ..

728x90
반응형