问答题
请说明是否存在这样的二叉树,即它可以实现后序线索树进行后序遍历时不使用栈;而对前序线索树进行前序遍历时,又有什么样的二叉树可不使用栈。【西安电子科技大学1996二、l(5分)】
【正确答案】正确答案:后序线索树中结点的后继,要么是其右线索(当结点的rtag=1时),要么是其双亲结点右子树中最左下的叶子结点。所以,只有当二叉树只有根或树中任一结点均无右子树时,进行遍历才不用栈,其遍历程序段如下: while(p一>1tag==0)p:=p一>lchild; //找最左下叶子结点 while(p一>rchild!=null) {visit(p一>data); //访问结点 p=p一>rchild; //沿线索向上 } 对前序线索二叉树,当二叉树非空时,若其结点有左子女(ltag=0),左子女是后继;否则,若结点有右子女(rtag=0),则右子女是后继;若无右子女(rmg=1),右链是线索,也指向后继。所以,对任何前序线索二叉树进行前序遍历均不需使用栈。
【答案解析】