问答题 设二叉树采用二叉链表作为存储结构。试用类Pascal语言实现按前序遍历顺序输出二又树中结点的非递归算法。要求定义所用结构。设栈已经定义:inits(S),empty(S),push(S,P),pop(S),top(S)分别为栈初始化,判栈空,入栈,出栈,看栈顶等操作。【北京工业大学1997二、1(10分)】
【正确答案】正确答案:while(bt!=null)||!empty(s)) {while(bt!=null) {cout<data;push(s,bt一>rchild);bt=b一>lchild;}//访问结点,右子女进栈 while(!empty(s)&&top(s)==null)bt=pop(s);//退栈 if(!empty(S))bt=pop(S); } 算法讨论:若不要求使用top(S),以上算法还可简化。
【答案解析】