二叉树的遍历简单的方法是递归,但是大量的递归还是比较消耗时间的,而使用栈方法就快速多了,虽然会有需要一定的空间缓存
> 定义数据结构
typedef struct BiTNode
{
int nValue;
struct BiTNode *pLChild;
struct BiTNode *pRChild;
}BiTNode, *PBiTree;
void PreOrder(PBiTree pRoot)
{
PBiTree pStack[100];
int nTop = 0;
PBiTree pCur = pRoot;
while (nTop > 0 || pCur != NULL)
{
while (pCur != NULL)
{//访问结点pCur所有的左孩子
Visit(pCur);
pStack[nTop++] = pCur;
pCur = pCur->pLChild;
}
if (nTop > 0)
{//出栈 访问右孩子
nTop--;
pCur = pStack[nTop];
pCur = pCur->pRChild;
}
}
}