<aside> 💡
Node 구조에 대하여
</aside>
Node는 연결 리스트, 트리, 그래프와 같은 다양한 데이터 구조의 기본 구성 요소로, 노드는 일반적으로 데이터와 다른
노드에 대한 참조를 포함한다.
단일 연결 리스트 (Singly Linked List) 에서는 각 노드가 데이터와 다음 노드에 대한 참조를 가진다.
public class Node
{
public int Data {get; set;} //데이터 저장
public Node Next { get; set; } // 다음 노드에 대한 참조
public Node(int data)
{
Data = data;
Next = null;
}
}
위 구조를 보면 노드는 크게 데이터와 다음 노드를 가리키는 Next 속성을 지니고 있다.
이중 연결 리스트(Doubly Linked List) 에서는 각 노드가 이전 및 다음 노드에 대한 참조를 모두 가진다.
public class DoublyNode
{
public int Data { get; set;}
public DoublyNode Previous { get; set;} // 이전 노드에 대한 참조
public DoublyNode Next { get; set;} // 다음 노드에 대한 참조
public DoublyNode (int data)
{
Data = data;
Previous = null;
Next = null;
}
}
이진 트리(Binary Tree) 에서 노드는 데이터와 왼쪽 및 오른쪽 자식에 대한 참조를 가진다.
public class TreeNode
{
public int Data { get; set; }
public TreeNode Left { get; set; } //왼쪽 자식 노드
public TreeNode Right { get; set; } //오른쪽 자식 노드
public TreeNode(int data)
{
Data = data;
Left = null;
Right = null;
}
}
노드가 다양한 데이터 타입을 처리하도록 제네릭(Generic) 을 사용 할 수 있음.
public class Node<T>
{
public T Data{ get; set;}
public Node<T> Next {get; set;}
public Node(T data)
{
Data = data;
Next = null;
}
}
노드를 구조체(Struct) 로 정의하는 방식도 가능함. 하지만 구조체는 값 타입이므로 참조 타입인 클래스보다
메모리 복사 비용이 높음.
public struct Node
{
public int Data{ get; set; }
public Node? Next{ get; set; }
public Node(int data)
{
Data = data;
Next = null;
}
}