二叉树的遍历:先序遍历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)