所谓二叉树的遍历,是指按照某条搜索路径访问树中的每个结点,使得每个几点均被访问一次,而且仅被访问一次。
遍历一棵二叉树便要决定对根结点N、左子树L和右子树R的访问顺序、按照先序遍历左子树再遍历右子树的原则,常见的遍历次序有先序(NLR)、中序遍历(LNR)和后序遍历(LRN)三种遍历算法。其中,序指的是根结点在何时被访问。
1、先序遍历(PreOrder)
如果二叉树为空,什么也不做,否则:
1)访问根结点
2)先序遍历左子树
3)先序遍历右子树
void preOrder(BiTree T){
if(T!=null){
visit(T);//访问根结点
preOrder(T->lchild);//递归遍历左子树
predOrder(T-rchild);//递归遍历右子树
}
}
2、中序遍历(InOrder)