📅  最后修改于: 2020-12-23 01:04:46             🧑  作者: Mango
遍历意味着访问树的所有节点。有三种遍历二叉树的标准方法。这些如下:
1.预遍历:二叉树的预遍历是一个递归过程。一棵树的预遍历是
2.后序遍历:二叉树的后序遍历是一个递归过程。一棵树的后置遍历为
3.有序遍历:二叉树的有序遍历是一个递归过程。树的有序遍历为
示例:确定二叉树的前序,后序和有序遍历,如图所示:
解决方案:树的预排序,后排序和有序遍历如下:
Preorder | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Postorder | 3 | 5 | 4 | 2 | 7 | 10 | 9 | 11 | 8 | 6 | 1 |
Inorder | 3 | 2 | 5 | 4 | 1 | 7 | 6 | 9 | 10 | 8 | 11 |
(a)给出树的有序和预序遍历时绘制唯一二叉树的算法:
示例:当有序遍历和预遍历遍历如下时,绘制唯一的二叉树:
Inorder | B | A | D | C | F | E | J | H | K | G | I |
Preorder | A | B | C | D | E | F | G | H | J | K | I |
解决方案:我们知道二叉树的根是预遍历中的第一个节点。现在,检查A,在有序遍历中,左A的所有节点都是左子树的节点,而右A的所有节点都是右子树的节点。阅读预购中的下一个节点,并检查其相对于根节点的位置(如果它在根节点的左侧),则将其绘制为左子节点,否则将其绘制为右子节点。对每个新节点重复上述过程,直到读取了遍历遍历的所有节点,最后我们得到了二叉树,如图所示:
(b)在给出树的有序和后序遍历时绘制唯一二叉树的算法:
示例:为给定的Inorder绘制唯一的二叉树,Postorder遍历如下所示:
订单4 6 10 12 8 2 1 5 7 11 13 9 3后订单12 10 8 6 4 2 13 11 9 7 5 3 1
解决方案:我们知道二叉树的根是后遍历中的最后一个节点。因此,在根节点中一个。
现在,检查有序遍历,我们知道根在中心,因此,在有序遍历中留在根节点上的所有节点都是左子树的节点,而在根节点右边的所有节点都是正确的子树。
现在,从后顺序遍历中从后面访问下一个节点,并检查其在顺序遍历中的位置,如果它在根的左侧,则将其绘制为左子节点,如果它在右侧,则将其绘制为右子节点。
对每个新节点重复上述过程,我们获得如图2所示的二叉树:
(c)将通用树转换为二叉树的算法
示例:将如图所示的以下树转换为二叉树。
解决方案:树的根是二叉树的根。因此,A是二叉树的根。现在,B成为二叉树中A的左子,C成为B的右子,D成为C的右子,E成为二叉树中D的右子,类似地,应用算法得到二叉树如图: