二叉树
1.前序遍历(先序遍历)
根节点-----左子树-----右子树 (根左右)
时间复杂度为O(n)
2.中序遍历
左子树-----根节点-----右子树 (左根右)
时间复杂度为O(n)
3.后序遍历
左子树-----右子树-----根节点 (左右根)
时间复杂度为O(n)
4.层序遍历
从根节点开始,一层一层,从上到下,每层从左到右
5.根据已知的两个遍历,求第三种遍历
方法:1.前序遍历的第一个节点就为该二叉树的根节点。
2.后序遍历的最后一个节点为该二叉树的根节点。
2.在中序遍历序列中找到根节点的位置,根节点左侧的所有节点都属于左子树,右侧的所有节点都属于右子树。
最后再依据前面的三条,对已经确认好的左子树或右子树进行分析,直至确定最终的二叉树。
5.1.已知前序遍历和中序遍历,确认后序遍历
例子:已知前序遍历为ABDHIEJCFKG,中序遍历为HDIBEJAFKCG,则该二叉树的后序遍历为?
分析:1.通过前序遍历可确认该二叉树的根节点为A
2.通过中序遍历+根节点为A,确认HDIBEJ为左子树,FKCG为右子树
3.对左子树HDIBEJ进行分析,分析原理同上,即前序遍历中的BDHIEJ中,B为左子树的根节点,再以此为依据,分析中序遍历中的HDIBEJ,HDI为左子树,EJ为右子树,接下来同理。
4.对右子树FKCG进行分析,分析原理同上,即前序遍历中的CFKG中,C为左子树的根节点,再以此为依据,分析中序遍历中的FKCG,FKI为左子树,G为右子树,接下来同理。
所以最后的图为,后序遍历为HIDJEBFGCA
5.2.已知后序遍历和中序遍历,确认前序遍历
例子:已知中序遍历为ABCDEFG,后序遍历为BDCAFGE,则该二叉树的前序遍历为?
分析:1.通过后序遍历可确认该二叉树的根节点为E
2.通过中序遍历+根节点为E,则确认ABCD为左子树,FG为右子树
3.对左子树ABCD进行分析,原理同上:中序遍历为ABCD,后序遍历为BDCA,A为左子树根节点,BCD为A的右子树,接下来同理。
4.对右子树FG进行分析,G是F的根节点
所以最后的图为:前序遍历为EACBDGF