问答题
设计算法返回二叉树T的先序序列的最后一个结点的指针,要求采用非递归形式,且不允许用栈。【合肥工业大学】999年】
【正确答案】正确答案:算法的基本设计思想:要找二叉树先序序列的最后一个结点,若二叉树有右子树,则是右子树中最右下的叶子结点;若无右子树,仅有左子树,则是左子树最右下的叶子结点:若二叉树无左、右子树,则返回根结点。算法的代码: BiTree LastNode(BiTree bt) { //返回二叉树bt先序序列的最后一个结点的指针 BiTree p=bt; if(bt==NULL) return NUI—L; else while(p) { i f(p一>rchild) p=p一>rchild; //若右子树不空,沿右子树向下 e1Se if(P一>lchiid) p=P一>ichild; //右子树空,左子树不空,沿左子树向下 e1Se return p; //p即为所求 } }//lastnode
【答案解析】