二叉树的遍历
- 先序遍历
- 中序遍历
- 后序遍历
1、先序遍历
若二叉树为空,则什么也不做;否则,
- 访问根节点
- 先序遍历左子树
- 先序遍历右子树
遍历节点顺序为:ABDECFG 。
说明:一根一根子树依次遍历完
对应的递归算法:
void PreOrder(BiTree T){
if(T != NULL){
visit(T); //访问根节点
PreOrder(T -> lchild); //递归遍历左子树
PreOrder(T ->rchild); //递归遍历右子树
}
}
2、中序遍历
若二叉树为空,则什么也不做;否则,
- 中序遍历左子树
- 访问根节点
- 中序遍历右子树
遍历节点顺序为:DBEAFCG
对应递归算法如下:
void InOrder(BiTree T){
if(T != NULL){
InOrder(T -> lchile); //递归遍历左子树
visit(T); //访问根节点
InOrder(T -> rchild); //递归·遍历右子树
}
}
3、后序遍历
若二叉树为空,则什么也不做;否则,
- 后续遍历左子树
- 后序遍历右子树
- 访问根节点
遍历节点顺序为:DEBFGCA
对应递归算法如下:
void PostOrder (BiTree T){
if(BiTree != null){
PostOrder (T -> lchild); //递归遍历左子树
PostOrder(T -> rchild); //递归遍历右子树
visit(T); //访问根节点
}
}
Notes:1、仅有先序遍历和后序遍历无法确定一唯一二叉树,二者任意加上中序遍历都能唯一确定一二叉树,层序序列加上中序序列也能确定一唯一二叉树。
2、要确定二叉树,就要分别找到根节点,左子树和右子树。