问答题
阅读下列程序说明和程序,填充程序中的__________。【程序说明】本程序完成将二叉树中左、右孩子交换的操作。交换的结果如下所示(编者略)。本程序采用非递归的方法,设立一个堆栈stack存放还没有转换过的结点,它的栈顶指针为tp。交换左、右子树的算法为:(1)把根结点放入堆栈。(2)当堆栈不空时,取出栈顶元素,交换它的左、右子树,并把它的左、右子树分别入栈。(3)重复(2)直到堆栈为空时为止。 typedef struct node *tree; struct node(int data;tree lchild,rchild;) exchange(t)tree t; (tree r,P; tree stack[500],int tp=0; (1). while(tp>=0) {(2) if((3) ) {r=p->ichild;p一>ichild=p->rchild;p一>rchild=r; stack[(4) ]=p一>ichild;stack[++tp]=p一>rchiid; } }} 【中科院自动化研究所1994二、2(15分)】
【正确答案】正确答案:(1)stack[tp]=t (2)p=stack[tp一] (3)P (4)++tp
【答案解析】