javascript 数据结构专题(三)--根据前序中序后序其中两种遍历推导树结构

234 阅读1分钟

一 根据前序遍历中序遍历推导树的结构

已知: 前序遍历: GDAFEMHZ 中序遍历: ADEFGHMZ 求后序遍历

提取信息

  • 1、前序遍历第一个根节点可以知道,这棵树的根节点是G。中序遍历中,根节点一定是在中间访问,知道G是根节点,G的左边左子树,G的右边右子树。
  • 2、左子树节点有:ADEF,右子树的节点有:HMZ。这个也分别是左子树和右子树的中序遍历的序列。(看到这里可以结束。下面就是递归理解了。)
  • 3、左子树当成一棵独立的树,执行前序遍历,同样先访问左子树的根,由此可以得到,左子树的根是D。
  • 4、从第2步得到的中序遍历的节点序列中,找到D,发现D左边只有一个A,说明D的左子树只有一个叶子节点,D的右边呢?我们可以得到D的右子树有EF,再看前序遍历的序列,发现F在前,也就是说,F是先前序遍历访问的,则得到E是F的左子树,只有一个叶子节点。

到这里,我们可以得到这棵树的根节点和左子树的结构了。如下图: