二叉树的遍历:
二叉树的遍历是指按某条搜索路径访问树中每个结点,使得每个结点均被访问一次,而且仅被访问一次.
先序遍历:
若二叉树为空,则什么也不做,否则
- 访问跟结点
- 先序遍历左子树
- 先序遍历右子树
void PreOrder(BiTree T){
if(T!=NULL){
visit(T);//访问根结点
PreOrder(T->lchild);//递归遍历左子树
PreOrder(T->rchild);//递归遍历右子树
}
}
先序遍历的非递归算法:
void InOrder2(BiTree T){
InitStack(S);
BiTree T;
while(p||!IsEmpty(S)){
if(p){
visit(p);
Push(S,p);//当前结点入栈
p = p->lchild;继续访问左孩子
}else