中易网

有一二叉树,中序遍历为DBAECF,前序遍历为ABDCEF,求后续遍历

答案:2  悬赏:0  
解决时间 2021-01-10 21:16
  • 提问者网友:杀生予夺
  • 2021-01-10 15:55
有一二叉树,中序遍历为DBAECF,前序遍历为ABDCEF,求后续遍历
最佳答案
  • 二级知识专家网友:woshuo
  • 2021-01-10 16:25
先给出结果吧,后序遍历为DBAEFC。解释有些麻烦,尽量能说得清楚一些吧。
前序遍历先访问根节点,然后前序遍历左子树,最后前序遍历右子树,这是一种递归的算法,由于第二步是前序遍历左子树,这样可以设想根节点的左子树还有一左子树,就会再先访问左子树的根节点,再前序遍历。中序遍历先中序遍历左子树,然后访问根节点,最后中序遍历右子树。
我们看到前序遍历的结果为ABDCEF,可以知道根节点是A,再看中序遍历的结果为DBAECF,可以看到根节点A在中间,两个节点DB肯定在根节点的左子树,节点ECF肯定在根节点的右子树。再看前序遍历的结果,根节点A后访问B(所以B肯定是D的根节点),最后是D,所以再看中序遍历(先中序遍历左子树),所以D是B的左子树。右子树部分也类推。很容易看到C是右子树的根节点(前序遍历先访问根节点),然后可推出E是左子树,F是右子树。
画了一幅图片,可能看图好理解一些

追问我不太会,但是按网上找的资料 做出来是DBEFCA。求问。图和你画的是一样的追答不好意思,刚看到,现在回答一下吧,看了一下,上一次回答的有些错误,后序遍历确实是DBEFCA。图片我没有画错,那用图片来说一下吧,后序遍历先后序遍历左子树,再后序遍历右子树,最后访问根节点。图中可以看到A是根节点,D、B在A的左边,称为左子树。C、E、F在A的右边,称为右子树。所以要先后序遍历左子树,又因为B是D的父节点(B在D上面,这相当于父亲和孩子,还好理解吧),就可以知道应先遍历D,然后是B。结束了后序遍历A的左子树后,开始后序遍历A的右子树,可以看到C是E和F的根节点,所以先遍历E,然后是F,再然后是C(这个过程也按照后序遍历)。这样就只剩整个二叉树的根节点A了,最后按照后序遍历的顺序,最后访问根节点,所以最后在访问A,这样最后的结果就是DBEFCA,这样回答可以吗?
也要理解递归的含义,写一下定义吧,一个直接调用自己或通过一系列的调用函数间接地调用自己的函数,称作递归函数。比如数学中学的f(n)=f(n-1),求f(n-1)还要再球f(n-2)。后序遍历就是一个递归的过程。如果还有不懂可以问,我会回答的
全部回答
  • 1楼网友:爱难随人意
  • 2021-01-10 17:02
自己画几遍就清楚了 DBEFCA
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息