若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后续遍历的结点访问顺序是?
来源:百度知道 编辑:UC知道 时间:2024/06/07 18:09:59
若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后续遍历的结点访问顺序是?
答案 gdbehfca
我的思路是这样的 根据前序遍历,得a为根结点,所以中序遍历里面a的左边部分dgb为左子树,右边的为右子树。可是后续遍历为什么会是gdbehfca?中序遍历中dgb为左子树,说明d在g左边,b在g右边,左右根的话,应该是dbg啊,貌似条件中前序遍历和后续遍历中左子树就矛盾了。还有后面的右子树也右点弄不懂怎么来的。请帮忙解释下。
答案 gdbehfca
我的思路是这样的 根据前序遍历,得a为根结点,所以中序遍历里面a的左边部分dgb为左子树,右边的为右子树。可是后续遍历为什么会是gdbehfca?中序遍历中dgb为左子树,说明d在g左边,b在g右边,左右根的话,应该是dbg啊,貌似条件中前序遍历和后续遍历中左子树就矛盾了。还有后面的右子树也右点弄不懂怎么来的。请帮忙解释下。
嗯,你第一步的划分是正确的
a为根,dgb为左子树,echf为右子树
接下来看左子树的前序遍历为bdg
b首先被访问
可以知道b为左子树的根,与a相连
再看左子树的中序遍历dgb
d和g都在b之前就被访问
所以b和g应该在b的左子树上
形状如下
---a
--/
--b
-/
dg
而dg的确定再根据前序遍历
d先被访问
则d为根
再看中序遍历也是d先被访问
可以确定g为d的右子树
左边就可以确定出来了
如果上面看懂了
右边就很简单,一样的道理
前序遍历cefh
确定c为右子树的根
再看中序遍历echf
e为c的左子树,hf为c的右子树
hf的确定在看前序遍历f先被访问
f为根
中序遍历h先被访问
h为f的左子树
整棵树就出来了
如下图
在做后序就是小菜一碟了
已知二叉树的先序遍历顺序和后序遍历顺序,能否知道其中序遍历顺序? 完全二叉树的顺序存储的先序遍历 已知二叉树后序遍历序列是DABEC 中序遍历列是 DEBAC ,它的前序遍历序列是: 已知二叉树后序遍历序列是dabec,中序遍历序列debac,它的前序遍历的序列是 已知二叉树的后序遍历序列dabec,中序遍历序列是debac,它的前序遍历序列是什么 求教由二叉树的前序遍历序列建立二叉树的非递归算法 二叉树的遍历 二叉树,前序遍历adbgcefh,中序遍历dgbaechf,求后序遍历?要有解答详细过程 前序遍历的顺序是怎么样的? 对某二叉树进行前序遍历的结果为ABDEFC,中序遍历的结果为DBFEAC,则后序周游的结果为