二叉树的非递归算法前序遍历
void InOrderTraversal(BinTree BT)
{
BinTree T = BT;
Stack S = CreatStack(MaxSize); //创建并初始化堆栈S
while(T || !IsEmpty(S))
{
while(T) //一直向左并将沿途节点压入堆栈
{
Push(S,T);
printf("%d\n", T->Data); //(访问) 打印结点
T = T->Left;
}
if(!IsEmpty(S))
{
T = Pop(S); //节点弹出堆栈
T = T->Right; //转向右子树
}
}
}
二叉树的非递归算法中序遍历
void InOrderTraversal(BinTree BT)
{
BinTree T = BT;
Stack S = CreatStack(MaxSize); //创建并初始化堆栈S
while(T || !IsEmpty(S))
{
while(T) //一直向左并将沿途节点压入堆栈
{
Push(S,T);
T = T->Left;
}
if(!IsEmpty(S))
{
T = Pop(S); //节点弹出堆栈
printf("%d\n", T->Data); //(访问) 打印结点
T = T->Right; //转向右子树
}
}
}