[题目分析] 先序遍历二叉树的非递归算法要求进栈元素少意味着空指针不进栈
void PreOrder(Bitree bt)//对二叉数bt进行非递归遍历
{int top=; Bitree s[]; //top是栈s的栈顶指针栈中元素是树结点指针栈容量足够大
while(bt!=null || top>)
{while(bt!=null)
{printf(bt>data); //访问根结点
if(bt>rchlid) s[++top]=bt>rchild; //若有右子女则右子女进栈
bt=bt>lchild; }
if (top>) bt=s[top];
}
本题中的二叉树中需进栈的元素有 CHKF
[题目分析]二叉树的顺序存储是按完全二叉树的顺序存储格式双亲与子女结点下标间有确定关系对顺序存储结构的二叉树进行遍历与二叉链表类似在顺序存储结构下判二叉树为空时用结点下标大于n(完全二叉树)或(对一般二叉树的虚结点)本题是完全二叉树
void PreOrder(ElemType btint n)//对以顺序结构存储的完全二叉树bt进行前序遍历
{int top=s[]; //top是栈s的栈顶指针栈容量足够大
while(i<=n||top>)
{while(i<=n)
{ printf(bt[i]); //访问根结点
if (*i+<=n) s[++top]=*i+; //右子女的下标位置进栈
i=*i; } //沿左子女向下
if(top>) i=s[top]; } //取出栈顶元素
}//结束PreOrder
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []