본문 바로가기

이진 트리4

[자료구조]이진 트리를 Linked List로 표현하기 이진 트리를 배열이 아닌 Linked List로 표현하는 경우가 많습니다. 다음은 이진 트리를 Linked List로 표현하기 위해 만든 각 노드를 나타낼 구조체 입니다. typedef struct treeNode* treePointer; typedef struct treeNode{ int data; treePointer leftChild; treePointer rightChild; } treeNode; data에는 각 노드에 할당된 값이 들어갑니다. leftChild에는 왼쪽 자식 노도의 주소값이 들어갑니다. 만약 왼쪽 자식이 없다면 leftChild에는 NULL을 넣습니다. rightChild에는 오른쪽 자식 노도의 주소값이 들어갑니다. 만약 오른쪽 자식이 없다면 rightChild에는 NULL을 넣.. 2023. 5. 24.
[자료구조]두 이진 트리가 같은지 판별하는 법(Testing for Equality of Binary Trees) 재귀적인 방식을 통해 두 이진 트리의 구조와 각 노드에서의 값을 비교함으로써 두 이진 트리가 같은지 판별할 수 있다. 아래는 이진 트리의 각 노드로 사용될 구조체입니다. typedef struct treeNode* treePointer; typedef struct treeNode{ int data; treePointer leftChild; treePointer rightChild; } treeNode; 아래 함수의 매개변수로 두 이진 트리의 root를 넣으면, isEqual 함수가 재귀적으로 실행되면서 두 이진 트리의 구조와 각 노드에서의 값을 비교하면서 같은지 같지 않은지를 판별합니다. 같으면 1을 리턴하고, 같지 않다면 0을 리턴합니다. int isEqual(treePointer first, tree.. 2023. 5. 23.
[자료구조]이진 트리를 복사하는 법(Copying Binary Trees) 재귀적인 방식을 통해 기존의 이진 트리를 복사할 수 있습니다. 아래는 이진 트리의 각 노드로 사용될 구조체입니다. typedef struct treeNode* treePointer; typedef struct treeNode{ int data; treePointer leftChild; treePointer rightChild; } treeNode; 아래 함수에 기존 이진 트리의 root(treePointer)를 넣으면 재귀적인 방식으로 복사되어, 최종적으로는 복사되어 만들어진 이진 트리의 root(treePointer)가 반환됩니다. treePointer copyBinaryTree(treePointer original){ treePointer temp; if(original) { temp = (treeP.. 2023. 5. 23.
[자료구조]트리(Tree)의 개념 트리 노드로 이루어진 자료구조이다. 그래프의 일종으로, 순환이 없는 연결 그래프이다.(Cycle 없음) 노드(Node)와 간선(Edge)으로 이루어져 있으며, 하나의 루트 노드를 갖는다. 모든 노드는 0개 이상의 자식 노드를 가진다. 계층적 관계를 나타내는 비선형 자료구조이다. 모든 자식 노드는 하나의 부모 노드를 가질 수 있다. 노드가 N개일 때, 간선은 N-1개 이다. 트리의 구조 트리의 구조는 아래와 같다. 루트 노드(root node) : 부모 노드가 없는 최상위 노드. 리프 노드(leaf node) : 자식 노드가 없는 노드. ( = terminal node) 내부 노드(internal node) : 리프 노드가 아닌 노드. 부모 노드(parent node) : 노드 C가 노드 F를 가리킬 때,.. 2023. 5. 18.