public void LevelOrder()
{
Console.WriteLine("이진트리 레벨오더");
Queue q = new Queue();
if (this.Root == null)
{
Console.WriteLine("노드가 없습니다.");
}
else
{
q.Enqueue(this.Root);
Node temp;
while (q.Count() > 0)
{
temp = q.Dequeue();
Console.Write("{0} ", temp.Data);
if (temp.Left != null)
{
q.Enqueue(temp.Left);
}
if (temp.Right != null)
{
q.Enqueue(temp.Right);
}
}
}
}
더보기
public Node AddChild(Node node, string data, int dir)
{
Node child = new Node(data);
if (this.Root == null)
{
this.Root = child;
return this.Root;
}
else
{
if (node == this.Root)
{
Node temp = this.Root;
if (temp.Left != null && temp.Right != null)
{
Console.WriteLine("뿌리에 더이상 자식을 추가할수 없습니다.");
return null;
}
else if (dir == 1)
{
if (temp.Left == null)
{
temp.Left = child;
return temp.Left;
}
else
{
Console.WriteLine("뿌리의 왼쪽자식이 이미 있습니다.");
return temp.Left;
}
}
else
{
if (temp.Right == null)
{
temp.Right = child;
return temp.Right;
}
else
{
Console.WriteLine("뿌리의 오른쪽자식이 이미 있습니다.");
return temp.Right;
}
}
}
else
{
if (node.Left != null && node.Right != null)
{
Console.WriteLine("{0}에 더이상 자식을 추가할수 없습니다.", node);
return null;
}
else if (dir == 1)
{
if (node.Left == null)
{
node.Left = child;
return node.Left;
}
else
{
Console.WriteLine("{0}의 왼쪽자식이 이미 있습니다.", node);
return node.Left;
}
}
else
{
if (node.Right == null)
{
node.Right = child;
return node.Right;
}
else
{
Console.WriteLine("{0}의 오른쪽자식이 이미 있습니다.", node);
return node.Right;
}
}
}
}
}
'자료구조' 카테고리의 다른 글
이진트리 PreOrder with Stack (0) | 2021.12.28 |
---|---|
이진트리 PreOrder 재귀구현 (0) | 2021.12.28 |
LCRS트리 PreOrder with Stack (0) | 2021.12.28 |
LCRS트리 PreOrder 재귀구현 (0) | 2021.12.28 |
사향트리 PreOrder (0) | 2021.12.28 |