二叉树 前序遍历 abdgcef 中序遍历 dgbaechf 后序遍历怎么求

来源:百度知道 编辑:UC知道 时间:2024/05/10 21:34:30
详细步骤!!一楼的太粗了吧

其实很简单 跟着我的思路来。。。
画出来了这个树,就很简单了对吧
前序遍历是先根。我们看abdgcef,第一个是a,说明整个树的根是a。
中序遍历中根,我们看dgbaechf。既然a是整个树的根,那么a左边的dgb就是左子树,a右边echf就是右子树。
再看前序遍历:a是根,那么接下来就应该是左子树了。我们把左子树分离出来看
既然中序遍历已经知道是dgb了,那么前序遍历就是a后面的bdg。
已知左子树的前序遍历是bdg,中序遍历是dgb,求左子树的形状。
看,这不又变成刚才的问题了吗?只不过是规模减小了。显然,根是d,d的左儿子是b,d的右儿子是g。
以此类推,就能画出整个Tree了。
很简单吧!多用手模拟一下,多做两三题,很快就能掌握了。
如果还不懂还可以Q我:328880142

你的前序遍历应该是 abdgcefh吧,漏了一个。
后序遍历是:gdbehfca

步骤:
先看前序: 第一个是a; 说明树根是a;
再看中序: a左边是dgb,说明a的左子树包含 dgb, 而右子树包含echf;
接着看b...一级级递归下去就可以精确的确定树的结构.

一楼把关键的都说了
首先分析前序 与 中序的特点
通过前序 一定可得出 第一个字母是当前树的根节点 a
由于中序是左,中,右; 有因为通过前序可得出当前树的根节点 那么在中序中找出这个根节点 也就是 a 然后它前面的就是左子树的中序 这时 就求出当前树 左子树的长度了 设为L1
然后 再在前序中找出左子树的前序(这很简单 就是当前的前序从2往后的L1个);
好 这样 就把当前树的左子树的前序和中序求出来了 并确立了根节点 同理,把右子树的前 中序也求出来
然后分别递归左右子树 求出它们的左右子树 直到递归到只有当前树只有根节点(无左右节点) 因为递归过程中已经确定了每个经过的子树的根 所以最后结束时 就已经确立了这个树的结构

最后输出 也采用递归

反正求这类问题的思路是 根据给出的序 先求出树的结构 再输出