最近在看一本名为大话数据的课程记录书,书中详述了二叉树前、中、后序的遍历,在此记录一下。
二叉树示例:
前序遍历:
//先来看前序遍历算法
void preOrderTraverse(BiTree T){
if(T == null){
return;
}
system.out.println(T->data);//输出显示当前树单元的数据
preOrderTraverse(T->lchild);//访问当前数据单元的左孩子
preOrderTraverse(T->rchild);//访问当前数据单元的右孩子
}
根据程序能看出,先写出当前树的值然后调用自身访问左孩子,左孩子没有的时候返回再访问右孩子。
则前序遍历结果为:A -> B -> D -> H -> K -> E -> C -> F -> I -> G -> J
中序遍历:
//先来看中序遍历算法
void preOrderTraverse(BiTree T){
if(T == null){
return;
}
preOrderTraverse(T->lchild);//访问当前数据单元的左孩子
system.out.println(T->data);//输出显示当前树单元的数据
preOrderTraverse(T->rchild);//访问当前数据单元的右孩子
}
根据程序能看出,先调用自身访问左孩子,左孩子没有的时候返回输出当前树单元再访问右孩子。
则前序遍历结果为:H -> K -> D -> B -> E -> A -> I -> F -> C -> G -> J
后序遍历:
//先来看后序遍历算法
void preOrderTraverse(BiTree T){
if(T == null){
return;
}
preOrderTraverse(T->lchild);//访问当前数据单元的左孩子
preOrderTraverse(T->rchild);//访问当前数据单元的右孩子
system.out.println(T->data);//输出显示当前树单元的数据
}
根据程序能看出,先调用自身访问左孩子,左孩子没有的时候返回再访问右孩子右孩子没有再访问输出当前树单元。
则前序遍历结果为:K -> H -> D -> E -> B -> I -> F -> J -> G -> C -> A