Unity/자료구조
[3.30] 트리 연습 1
ljw4104
2021. 3. 30. 17:53
namespace Study01
{
public class Node
{
public string data;
public Node left;
public Node right;
public Node(string data)
{
this.data = data;
}
}
}
using System;
using System.Collections.Generic;
namespace Study01
{
public class Tree
{
private Node root;
public Tree(string data)
{
this.root = new Node(data);
}
public Node AddChild(Node parent, string data)
{
if (parent == null) return null;
if (parent.left == null)
{
parent.left = new Node(data);
return parent.left;
}
else
{
var discover = parent.left;
while (discover.right != null)
{
discover = discover.right;
}
discover.right = new Node(data);
return discover.right;
}
}
public Node AddSilbling(Node node, string data)
{
if (node == null) return null;
if (node.right == null)
{
node.right = new Node(data);
return node.right;
}
else
{
while (node.right != null)
{
node = node.right;
}
node.right = new Node(data);
return node.right;
}
}
public void PrintBFS()
{
Queue<Node> queue = new Queue<Node>();
queue.Enqueue(this.root);
while (queue.Count > 0)
{
var item = queue.Dequeue();
while(item != null)
{
Console.Write("{0} ", item.data);
if (item.left != null)
queue.Enqueue(item.left);
item = item.right;
}
Console.WriteLine();
}
}
public void PrintDFS(Node node)
{
if (node != null)
Console.WriteLine(node.data);
if(node != null)
{
PrintDFS(node.left);
}
if (node != null)
{
PrintDFS(node.right);
}
}
public Node GetRoot()
{
return this.root;
}
}
}
using System;
namespace Study01
{
public class App
{
public App()
{
Tree tree = new Tree("서울");
Node root = tree.GetRoot();
Node inc = tree.AddChild(root, "인천");
Node snam = tree.AddSilbling(inc, "성남");
tree.AddChild(inc, "안산");
Node pan = tree.AddChild(snam, "판교");
tree.AddSilbling(pan, "수원");
Console.WriteLine("BFS SEARCH RESULT");
tree.PrintBFS();
Console.WriteLine();
Console.WriteLine("DFS SEARCH RESULT");
tree.PrintDFS(root);
Console.WriteLine();
}
}
}