0.首先我们知道二叉树主要有前序、中序、后序、层序这四种遍历方式。我们已知一棵树,很容易实现这几种遍历方式,但是如何来构建一颗已知它的某几种输出方式所决定的树却并不容易。下面Bright同学将来探讨探讨!
1.前序的遍历特点:根节点->左儿子->右儿子
2.中序的遍历特点:左儿子->根节点->右儿子
3.后序的遍历特点:左儿子->右儿子->根节点
4.层序遍历的特点:每一层一层的遍历,再往下一层.
{
4.1.树不为空,Root进队
4.2.进入循环,队列不为空,拿出队列头元素,头元素出队
4.3.头元素的左右儿子(若存在)入队,并打印头元素的数据
4.4.结束循环,将队列中的元素全部出队
}
1.已知前序、中序
求解方法:
1.已知前序的第一个是根节点,确定一个根节点
2.根据已确定的根节点,从中序中找到该根节点的位置
3.我们知道中序输出中,一个根节点的两边分别是左子树和右子树
4.由上述三个特点可以确定一个小的二叉树的单元,根节点和左子树右子树
5.然后左右子树又分别可以找到根节点,所以可以继续递归进行下去,直到所有元素
如:
2.已知中序、后序
1.已知后序的最后一个是根节点,确定一个根节点
2.根据已确定的根节点,从中序中找到该根节点的位置
3.我们知道中序输出中,一个根节点的两边分别是左子树和右子树
4.由上述三个特点可以确定一个小的二叉树的单元,根节点和左子树右子树
5.然后左右子树又分别可以找到根节点,所以可以继续递归进行下去,直到所有元素
3.已知前序、后序
emmmm!!!这个情况下其实中序不是确定的,所以就没办法给出了。
4.已知层序遍历结果
假设要构造的二叉树的层序遍历序列存在一个数组里
1.只要数组不为空,就先入队数组首元素,并用这个值创建二叉树的Root。
2.然后进入循环,队列不为空,就拿队头元素,对头再出队。队列为空,结束循环。
3.只要数组还有元素,就先给刚刚拿出的对头元素创建左孩子,然后左孩子入队。
4.同上,再创建右孩子,右孩子入队。
5.结束一次循环。回到2