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

admin2014-01-13  33

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

选项

答案二叉树结点p所对应子树的第一个后序遍历结点q的求法如下:若p有左子树,则q是p的左子树上最左下的叶子结点;若p无左子树,仅有右子树,则q是p的右子树上最左下的叶子结点。 题目“求P所对应子树的第一个后序遍历结点“,蕴涵P是子树的根。若p是叶子结点,求斯后继要通过双亲。 程序代码如下: BiTree PostHrst(p) { BiTree q—P; if(! q) return(null): else while(q一>lch“dq->rchild);/找最左下的叶子结点 if(q->1child) q=q->lchild; //优先沿左分支向下去查最左下的叶子结点 else q=q->rchild; //沿右分支去查最左下的叶子结点 return((1); }

解析
转载请注明原文地址:https://jikaoti.com/ti/mRU3FFFM
0

最新回复(0)