
후위 순회 post-order Recursive
후위 순회 post-order Stack

public void PostOrderStack(Node root)
{
Stack<Node> stack = new Stack<Node>();
Node temp = root;
Node prev = null; // Pop으로 반환한 값을 저장할 변수
while (temp != null || stack.Count != 0)
{
if (temp != null)
{
stack.Push(temp);
temp = temp.Left;
}
else
{
temp = stack.Peek();
if (temp.Right == null || temp.Right == prev) // temp의 오른쪽이 비어있거나 이전에 Pop한 값이랑 같을때
{
prev = stack.Pop();
Console.WriteLine(prev.Data);
temp = null;
}
else // temp의 오른쪽에 값이 있을때
{
temp = temp.Right;
}
}
}
}

'C# > 수업 내용' 카테고리의 다른 글
| [C#] Graph DFS (0) | 2021.10.04 |
|---|---|
| [C#] Binary Search Tree(이진 탐색 트리) Add, Search, Remove (0) | 2021.09.30 |
| [C#] 이진 트리 in-order(중위 순회) (0) | 2021.09.30 |
| [C#] 이진 트리 pre-order(전위 순회) (0) | 2021.09.30 |
| [C#] 배열 Binary Tree (0) | 2021.09.29 |