标签:
采用堆栈实现
1.先序遍历
void InOrderTraversal(BinTree BT) { BinTree T=BT; Stack S=CreatStack(MaxSize); while(T || !IsEmpty(S)) { while(T)//T存在就压栈,遍历其左子树 { Push(S,T); T=T->Left; } if(!IsEmpty(S))//压入的全部弹出来 { T=Pop(S); printf("%d\n",T->Data); T=T->Right;//最后将T变成了T的右子节点 } } }
2.中序遍历
void PreOrderTraversal(BinTree BT) { BinTree T=BT; Stack S=CreatStack(MaxSize); while(T || !IsEmpty)(S){ while(T){ printf("%d\n",T->Data); Push(S,T); T=T->Left; } if(!IsEmpty(S)){ T=Pop(S); T=T->Right; } } }
3.后序遍历(待补)
标签:
原文地址:http://www.cnblogs.com/lcpl96/p/5730073.html