已知一二叉树中结点的左右孩子分别为left和right,P指向二叉树的某一结点。请用C语言编一个非递归函数PostFirst(p),求P所对应子树的第一个后序遍历结点。

admin2013-12-19  37

问题 已知一二叉树中结点的左右孩子分别为left和right,P指向二叉树的某一结点。请用C语言编一个非递归函数PostFirst(p),求P所对应子树的第一个后序遍历结点。

选项

答案程序代码如下: BiTree PostFirst(p) { BiTree q=P; if(!q) return(null); else while(q->lchild||q->rchild); //找最左下的叶子结点 if(q->lchild) q=q->lchild; //优先沿左分支向下去查最左下的叶子结点 else q=q->rchild; //沿右分支去查最左下的叶子结点 return(q); }

解析 二叉树结点P所对应子树的第一个后序遍历结点q的求法如下:若p有左子树,则q是P的左子树上最左下的叶子结点;若P无左子树,仅有右子树,则q是p的右子树上最左下的叶子结点。
    题目“求P所对应子树的第一个后序遍历结点”,蕴涵P是子树的根。若P是叶子结点,求斯后继要通过双亲。
转载请注明原文地址:https://kaotiyun.com/show/sYal777K
0

相关试题推荐
随机试题
最新回复(0)