// 재귀함수 이용 - 트리 내용 출력 void PrintTree <T>(D05_TreeNode <T> root) { Debug.Log(root.Data); // 루트 노드의 내용을 출력한다 foreach (var child in root.Children) // 노드의 각 자식마다 { PrintTree <T>(child); // 이 작업(출력 후 자식 탐색)을 반복한다. } }
public override void TestCode02() { code2 = "트리 구현 연습 - 트리 높이 구하기"; if (onStartTreeClear && root != null) { root = null; } MakeTree(); Debug.Log("트리 높이 : " + GetHeight(root)); }
public override void TestCode01() { code1 = "트리 구현 연습 - 게임 개발팀 구조 묘사"; if (onStartTreeClear && root != null) { root = null; } MakeTree(); PrintTree <string>(root); }
// 재귀함수 이용 2 - 트리 높이 구하기 int GetHeight <T>(D05_TreeNode <T> root) { int childHeight = 0; if (root.Children.Count == 0) { return(0); } foreach (var child in root.Children) { childHeight = Mathf.Max(childHeight, GetHeight(child)); } return(childHeight + 1); }
void MakeTree() { if (root != null) { return; } root = new D05_TreeNode <string>() { Data = "개발실" }; { D05_TreeNode <string> node = new D05_TreeNode <string>() { Data = "디자인팀" }; root.Children.Add(node); node.Children.Add(new D05_TreeNode <string>() { Data = "전투" }); node.Children.Add(new D05_TreeNode <string>() { Data = "경제" }); node.Children.Add(new D05_TreeNode <string>() { Data = "스토리" }); } { D05_TreeNode <string> node = new D05_TreeNode <string>() { Data = "프로그래밍팀" }; root.Children.Add(node); node.Children.Add(new D05_TreeNode <string>() { Data = "서버" }); node.Children.Add(new D05_TreeNode <string>() { Data = "클라이언트" }); { D05_TreeNode <string> _node = new D05_TreeNode <string>() { Data = "엔진" }; node.Children.Add(_node); _node.Children.Add(new D05_TreeNode <string>() { Data = "유니티" }); _node.Children.Add(new D05_TreeNode <string>() { Data = "언리얼" }); } } { D05_TreeNode <string> node = new D05_TreeNode <string>() { Data = "아트팀" }; root.Children.Add(node); node.Children.Add(new D05_TreeNode <string>() { Data = "배경" }); node.Children.Add(new D05_TreeNode <string>() { Data = "캐릭터" }); } }