二叉树的遍历:先序遍历NLR、中序遍历LNR、后序遍历LRN
1、 先序遍历(PreOrder)
过程:如果二叉树为空,什么也不做。否则
1.1访问根结点
1.2先序遍历左子树
1.3先序遍历右子树
对应的递归算法如下:
Void PreOrder(BiTree T){
If(T!=NULL){
Visit(T);//访问根节点
PreOder(Tlchild); //递归遍历左子树
PreOder(T->rchild); //递归遍历右子树
}
}
2、 中序遍历(InOrder)
过程:如果二叉树为空,什么也不做。否则:
Void InOrder(BiTree T){
If(T!=NULL){
InOrder(T->lchild); //递归遍历左子树
Visit(T); //访问根结点
InOrder(T->rchild); //递归遍历右子树
}
}
3后序遍历
Void PostOrder(BiTree T ){
If(T!=NULL){
PostOrder(T->lchild);
PostOrder(T->rchild);
Visit(T);
}
}
三种算法:时间复杂度为O(n),空间复杂度:O(n)