首先得明白什么是二叉树的先序中序后序遍历:
给出先序和中序遍历重建二叉树:
思路:
1、二叉树的先序遍历的第一个结点是根节点;
2、中序遍历的根节点左边的序列是左子树的结点,右边的序列是右子树的结点;
3、左子树和右子树分别重复步骤1、2;
步骤如下:
给出先序和后序遍历重建二叉树:
这个无法给出正确的树结构,因为先序(根左右)和后序(左右根)遍历的左右孩子遍历的顺序一样,无法区分。
如先序遍历结果 1 2 , 后序遍历结果 2 1 ,我们只知道根节点为1,却不知道2是左孩子还是右孩子
给出中序和后序遍历重建二叉树:
与先序和中序的思路差不多:
1、二叉树的后序遍历的最后一个结点是根节点;
2、中序遍历的根节点左边的序列是左子树的结点,右边的序列是右子树的结点;
3、左子树和右子树分别重复步骤1、2;
步骤如下:
最后:
如果想看c++代码实现:c++ 刷题 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。