一颗二叉树前序遍历和中序遍历分别是ABDEGCFH、DBGEACHF,则此后序遍历是?请高手解释怎么得的,说明原理!
5个回答
展开全部
后序遍历是DGEBHFCA。
前序遍历的第一个节点为根节点,由前序遍历可知,A为根节点。中序遍历的根节点前面的节点均为左子树的节点,所以左子树上的节点为DBGE。
去掉根节点和左子树节点,右子数节点为CHF。前序遍历的第二个节点为B,由2知B为左子树节点,所以B为左子树的根节点。
在二叉树中,求后序遍历,先左后右再根,即首先遍历左子树,然后遍历右子树,最后访问根结点。则该二叉树的后序遍历是DGEBHFCA。
扩展资料:
除了先序遍历、中序遍历、后序遍历外,还可以对二叉树进行层序遍历。设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发。
首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。
展开全部
前序可知A是根结点,由A在中序中的位置可以看出A的左子树上包括DBGE四个结点,右子树上包括CHF三个结点。由前序列可以看出B结点是左子树的根结点,再结合B在上述四个结点中的位置可以得出B的左子树为D右子树包含GE两个结点。由前序列E在G前面,说明E是B的右结点,中序排列中G在E前面说明G是E的左结点,A的右子树也可以这样推出来。
画图最简单了,由第一序列先画上根结点A,第一数列中第二位是B,在第二个数列中B在已确定的A的左侧,那么B就是A的左结点,B也确定了。第一数列中第三位是D,D在第二数列中位于已确定的B的左侧,那D就是B的左结点;第一数列中第四个是E,E在第二个数列中已确定的B的右侧,那么E就是B的右结点;第五个是G,G在第二数列中位于已确定的E的左侧,那么G就是E的左结点;第六个是C,C在第二个数列中位于已确定点A的右侧,C是A的右结点;下一个是F,F在已确定结点C的右侧,F是C的右结点;最后一个H,H在C的右侧F的左侧,则F是C的左结点。好了整个二叉树出来了,后序遍历自己看就行了。
画图最简单了,由第一序列先画上根结点A,第一数列中第二位是B,在第二个数列中B在已确定的A的左侧,那么B就是A的左结点,B也确定了。第一数列中第三位是D,D在第二数列中位于已确定的B的左侧,那D就是B的左结点;第一数列中第四个是E,E在第二个数列中已确定的B的右侧,那么E就是B的右结点;第五个是G,G在第二数列中位于已确定的E的左侧,那么G就是E的左结点;第六个是C,C在第二个数列中位于已确定点A的右侧,C是A的右结点;下一个是F,F在已确定结点C的右侧,F是C的右结点;最后一个H,H在C的右侧F的左侧,则F是C的左结点。好了整个二叉树出来了,后序遍历自己看就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前序先访问根节点,因此a是根节点,中序先访问左子树,再访问根,再访问右子树,因为已经确认a为根,所以,从中序可知,dbge为左子树,a为根,chf为右子树。然后对左、右子树分别处理。结果为dgebhfca
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
由前序遍历确定根的位置,中序遍历确定左右子树包括的结点,然后分成两棵子树的相同子问题来递归求解,如此即可确定树的结构,后序遍历就没问题了。
(DBGE)A(CHF)→((D)B(GE))A(C(HF)→((D)B((G)E))A(C((H)F),
所以后序遍历为DGEBHFCA
(DBGE)A(CHF)→((D)B(GE))A(C(HF)→((D)B((G)E))A(C((H)F),
所以后序遍历为DGEBHFCA
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前序就是先根,则A必定是根!!!
从中序就能从A一分为二,分别为左与右的子树;
中序:
左子中序
DBGE
右子中树
CHF
再从前序中分出左、右子树:
前序
左子前序:
BDEG
右子前序
CFH
这个问题递归成两个小问题。同样的方法再分析出两个子树
从中序就能从A一分为二,分别为左与右的子树;
中序:
左子中序
DBGE
右子中树
CHF
再从前序中分出左、右子树:
前序
左子前序:
BDEG
右子前序
CFH
这个问题递归成两个小问题。同样的方法再分析出两个子树
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询