第1个回答 2011-06-21
preorder (R) //先序遍历二叉树R
int R[n];
{ int root;
SqStack *s; //s为一个指针栈,类型为seqstack,其中包含top域和数组data
s->top= -1; //s栈置空
root=1;
while ((root<=n) && (s->top>-1))
{ while (root<=n)
{ printf(R[root]);
s->top++;
s->data[s->top]=root;
root=2*root;
}
if (s->top>-1) //栈非空访问,遍历右子树
{ root=s->data[s->top]*2+1;
s->top--;
}
}
}