更新时间:2021年9月14日
本文内容是我专栏《考研数据结构题型分类讲解练习》中的内容的总结,专栏中的题目都很经典,欢迎订阅我的专栏《考研数据结构题型分类讲解练习》https://blog.csdn.net/weixin_38233103/category_10633876.html?spm=1001.2014.3001.5482https://blog.csdn.net/weixin_38233103/category_10633876.html?spm=1001.2014.3001.5482
先序遍历 | 中序遍历 | 后序遍历 | 层次遍历 | |
---|---|---|---|---|
先序遍历 | 可以 | 不可以 | 不可以 | |
中序遍历 | 可以 | 可以 | ||
后序遍历 | 不可以 | |||
层次遍历 |
先序遍历、中序遍历
可以
因为前序序列的第一个元素是根结点,该元素将二叉树中序序列分成两部分,左边(设L个元素)表示左子树,若左边无元素,则说明左子树为空;右边(设R个元素)是右子树,若为空,则右子树为空。
根据前序遍历中“根-左子树-右子树”的顺序,则由从第二元素开始的L个结点序列和中序序列根左边的L个结点序列构造左子树,由前序序列最后R个元素序列与中序序列根右边的R个元素序列构造右子树。
后序遍历、中序遍历
可以
因为后序序列的最后一个元素是根结点,该元素将二叉树中序序列分成两部分,左边(设L个元素)表示左子树,若左边无元素,则说明左子树为空;右边(设R个元素)是右子树,若为空,则右子树为空。
根据后序遍历中“左子树-右子树-根”的顺序,则由从倒数第二元素开始向前的L个结点序列和中序序列根左边的L个结点序列构造左子树,由后序序列前R个元素序列与中序序列根右边的R个元素序列构造右子树。
先序遍历、后序遍历
不可以
由二叉树的前序序列和后序序列不能唯一确定一棵二叉树,因无法确定左、右子树两部分。例如,任何结点只有左子树的一棵二叉树和任何结点只有右子树的一棵二叉树,其两棵树的前序序列相同,后序序列相同,但却是两棵不同的二叉树。
后序遍历、层次遍历
不可以
下图两棵树先序遍历和层次遍历都相同。但却是两棵树。
先序遍历、层次序列
不可以
下图两棵树先序遍历和层次遍历都相同。但却是两棵树。
中序序列、层次序列
可以
层次序列的第一个节点是根节点。在中序遍历中就可以分出来左子树和右子树。
左子树上的点构成的层次遍历可以在,整棵树的层次遍历中提取出来。
同理,右子树的层次遍历也可以得到。
在左子树层次遍历中,寻找左子树中出现的第一个节点,这个节点就是左子树的根节点。
在右子树层次遍历中,寻找右子树中出现的第一个节点,这个节点就是右子树的根节点。
对左子树和右子树,递归执行上述步骤,就可以构建一颗二叉树