问答题
已知一二叉树中结点的左右孩子分别为left和right,p指向二叉树的某一结点。请用C或Pascal编一个非递归函数postfirstp),求p所对应子树的第一个后序遍历结点。【浙江大学1998六(10分)】【上海交通大学2004二(10分)】
【正确答案】正确答案:二又树结点P所对应子树的第一个后序遍历结点g的求法如下:若P有左子树,则q是p的左子树上最左下的叶子结点;若P无左子树,仅有右子树,则q是P的右子树上最左下的叶子结点。 while(q一>left llq一>right) //找最左下的叶子结点,初始调用q=p if(q一>left)q=q一>left; //优先沿左分支向下去查“最左下”的叶子结点 else q=q一>right; //沿右分支去查“最左下”的叶子结点
【答案解析】