问答题 已知一中序线索二叉树,写一算法完成对它的中序扫描。【山东大学2001年】
【正确答案】正确答案:算法的基本设计思想:循环执行以下步骤:沿左分支向下,访问最左端第一个没有左子树的结点(中序遍历第一个结点),然后当有右线索时访问后继结点,有右孩子时转到右子树。算法的代码: VOid InOrderThreat(BiThrTree thrt){ //thrt是指向中序全线索化头结点的指针,本算法中序遍历该二叉树 p=thrt一>lchild; //p指向二叉树的根结点,当二叉树为空时,P指向thrt while(P!=thrt) { while(P一>ltag==O) p=p->ichiid; //沿左子女向下 visit(*p), //访问左子树为空的结点 while(p一>rtag==1&&p->rchiid!=thrt) { P=P一>rchiid; viSit(*p); //沿右线索访问后继结点 } p=p一>rchild; //转向右子树 } }//InOrderThread
【答案解析】