非递归遍历:
先根遍历
public void StackPreOrder(Node head)
{
Console.WriteLine("Pre-Order: ");
if (head !=null)
{
Stack<Node> stack = new Stack<Node>();
stack.Push(head);
while (stack.Count>0)
{
head = stack.Pop();
Console.WriteLine(head.Data+" ");
//压入栈顶 先进后出 (大的先进)
if (head.Right!=null)
{
stack.Push(head.Right);
}
if (head.Left !=null)
{
stack.Push(head.Left);
}
}
}
}
<