1. 程式人生 > >二叉樹的非遞迴實現先序遍歷

二叉樹的非遞迴實現先序遍歷

//先序遍歷非遞迴演算法的實現  用到自定義的棧
void preOrderNonrecursion(BTNode *bt)
{
	if(bt !=null)
	{
		BTNode  *stack[maxSize];     //先定義一個棧用於存放遍歷的二叉樹
		int top=-1;
		BTNode *P;
		stack[++top]=bt;      //元素進棧

		while(top!=-1)         //進棧不空條件下執行
		{
			p=stack[top--];    //出棧操作
			visit(p);			//事先定義好的列印節點的操作
			if(p->rchild!=null)                 //先右子樹進棧
				stack[++top]=p->rchild;
			if(p->lchild!=null)					//再左子樹進棧
				stack[++top]=p->lchild;
		}
	}
}