二叉树前序中序后序及其推理
二叉书的前中后序遍历顺序。
以下面这个图为例:
前序遍历为:1 2 4 7 3 5 6 8
后序遍历为:7 4 2 5 8 6 3 1
中序遍历为:4 7 2 1 5 3 8 6
规则很简单就是:前序遍历就是按照:中左右,中序就是左中右,后序遍历就是左右中。其实我感觉可以用递归的感觉来描述,按照前序遍历来说就是中间的1之后,分成了左孩子和右孩子,对于左孩子来说我就要同样按照中左右来遍历。其实前序遍历这中思想不明显你看中序遍历吧,那就是先要遍历1的左孩子然后在是右孩子,而要完成遍历1的左孩子的条件就是遍历1左孩子的左孩子,然后依次类推,然后返回就行了。
前中后序遍历已经知道两个求解二叉树的图
其实这个东西推导就行了,就是已经知道什么然后根据这个又能推出什么然后又能推出什么,最后就都推完了。
然后我总结出了一些规律:
1.已知前序和中序推二叉树的图(以上面的图为例)
前序遍历为:1 2 4 7 3 5 6 8
中序遍历为:4 7 2 1 5 3 8 6
首先1 是根节点然后我们看中序遍历可知左边有4 7 2右边有5 3 8 6
然后我们根据这个信息在看前序遍历可知 2 为左子树的顶点,然后3是右子树的顶点,然后我们根据这个信息在看中序遍历可知47 在2 的左边所以在图中就是在以2为顶点的左半部,然后3的左边有5右边有86那就有以3为顶点的左边是5右边是86,然后我们在根据这个信息看前序遍历可知4为下一个顶点然后在根据中序遍历可知4在7的左边的所以对应图中就是4的左节点没有右节点为7,同理可知6为顶点然后再看中序遍历可知8在6的右边对应图中就是6的左节点就是8右节点没有。
总结:根据前序遍历找根节点根据中序遍历找位置
2.已知后序和中序基本和上面差不多,结论也基本一致
3.已知前序后序求二叉树的图
前序遍历为:1 2 4 7 3 5 6 8
后序遍历为:7 4 2 5 8 6 3 1
这种在我看来是最简单的,(可以先假设对于前序遍历来说头节点后一个就是左孩子,对于后序遍历来说头节点前一个就是右孩子)首先我们可以根据前序遍历(后序遍历)得到根节点1然后我们可以根据前序遍历得到根节点的左孩子2,根据后序遍历我们可以的到右孩子3,然后我们在前序遍历中找到3,就能得到247在左边然后3 5 6 8在右边,根据前面的假设我们发现出现了驳论然后这种情况就是说明分层了,自己在稍微尝试一下就行了,然后大概就是这样了。
#因为我只做了这一道题,出错了的话以后再改吧!