第1个回答 2011-05-06
后序遍历就是:
后序遍历左子树
后序遍历右子树
输出根节点
如图举例就是:
左子树为bde三个节点
。。左子树的左子树为d
。。左子树的右子树为e
。。左子树的根为b
左子树后序遍历为deb。
右子树为fc两个节点
。。右子树的左子树不存在
。。右子树的右子树为f
。。右子树的根为c
右子树后序遍历为fc
整个树的根为a
所以就是 debfca
第2个回答 2011-05-07
先序遍历 根左右abdecf
中序遍历 左根右dbeacf
后序遍历 左右根debfca
后序,你先看左枝,最左面的是d,接着在d右边的是e,而d和e是b的分支,按照“左右根”的顺序,就是deb,然后以此类推,看a的右分支,f是c的右分支,写下来就是fc,然后再根据“左右根”,结果就是debfca
第3个回答 2011-05-06
无论是先中后序遍历,对于子节点都是先左节点后右节点的,后序遍历是先遍历子节点,
则开始找a的左边,再找b的左边 d 右边e 接着b 这样a的左边遍历完 再遍历右边先遍历c的子节点f 再c 最后根节点a 则就是debfca
第4个回答 2011-05-06
后序遍历是:左、右、根
即,先遍历左结点,再遍历右结点,再遍历根结点
根据你的图
先遍历a的左结点,由于a的左结点b还有左结点,所以就先遍历到d了,然后就是b的右结点
算法可以如下设计:
void PostOrder(BTNode *r)
{
if(r != NULL)
{
PostOrder(r->lchild);
PostOrder(r->rchild);
cout << r->data << " ";
}
}