C#
Tree 구조 데이터 바인딩
샐님
2024. 12. 4. 16:25
728x90
반응형
#에서 트리 구조에서 부모 인덱스가 같을 경우 재귀 호출을 사용하는 로직을 구현하려면, 일반적으로 트리의 노드를 표현하는 데이터 구조와, 재귀를 이용해 자식 노드를 탐색하는 방법을 사용합니다.
아래는 트리 구조에서 부모 인덱스가 같은 자식들을 재귀적으로 처리하는 예시입니다.
1. 트리 구조 정의
먼저, 트리의 각 노드를 표현하는 클래스를 정의합니다. 각 노드는 부모 인덱스를 통해 부모와 연결되고, 자식 노드를 리스트로 가질 수 있습니다.
using System;
using System.Collections.Generic;
public class TreeNode
{
public int Index { get; set; } // 각 노드의 고유 인덱스
public int ParentIndex { get; set; } // 부모 노드의 인덱스
public string Data { get; set; } // 노드에 저장된 데이터
public List<TreeNode> Children { get; set; }
public TreeNode(int index, int parentIndex, string data)
{
Index = index;
ParentIndex = parentIndex;
Data = data;
Children = new List<TreeNode>();
}
}
public class Tree
{
private List<TreeNode> nodes = new List<TreeNode>();
public void AddNode(int index, int parentIndex, string data)
{
var newNode = new TreeNode(index, parentIndex, data);
nodes.Add(newNode);
}
public List<TreeNode> GetChildren(int parentIndex)
{
return nodes.FindAll(node => node.ParentIndex == parentIndex);
}
public void PrintTree(int parentIndex)
{
var children = GetChildren(parentIndex);
foreach (var child in children)
{
Console.WriteLine($"Node {child.Index}: {child.Data}");
// 자식 노드를 재귀적으로 출력
PrintTree(child.Index);
}
}
}
public class Program
{
public static void Main()
{
Tree tree = new Tree();
// 트리에 노드 추가 (인덱스, 부모 인덱스, 데이터)
tree.AddNode(1, 0, "Root");
tree.AddNode(2, 1, "Child 1");
tree.AddNode(3, 1, "Child 2");
tree.AddNode(4, 2, "Child 1.1");
tree.AddNode(5, 2, "Child 1.2");
tree.AddNode(6, 3, "Child 2.1");
// 부모 인덱스가 1인 노드들을 재귀적으로 출력
tree.PrintTree(1);
}
}
설명
- TreeNode 클래스는 각 트리 노드를 표현합니다. 노드는 고유의 Index와 ParentIndex를 가지며, 여러 자식 노드를 가질 수 있습니다.
- Tree 클래스는 트리에서 노드를 추가하고, 부모 인덱스에 맞는 자식 노드를 검색하고 출력하는 메서드를 제공합니다.
- PrintTree 메서드는 주어진 parentIndex를 가진 노드의 자식들을 재귀적으로 출력하는 역할을 합니다. 자식 노드를 찾으면 해당 자식에 대해 다시 PrintTree를 호출하여 재귀적으로 탐색합니다.
Node 2: Child 1
Node 4: Child 1.1
Node 5: Child 1.2
Node 3: Child 2
Node 6: Child 2.1
728x90
반응형