二叉树的遍历

来源:互联网 发布:淘宝代销不赚钱 编辑:程序博客网 时间:2024/06/07 15:31

先序,中序,后序,非递归前序,中序,后序,层序

在此默写一下各个算法。前序void PerOrder(BTree bt){    if(!bt){        visit(bt);        PerOrder(bt->left);        PerOrder(bt->right);    }}void PerOrder(BTree bt){    InitStack(S);    BTree p=bt;    while(p||!IsEmpty(S)){        if(p){            visit(p->data);            Push(S,p);            p=p->left;        }else{            Pop(S,p);            p=p->right;        }    }}中序void InOrder(BTree bt){    if(!bt){        InOrder(bt->left);        visit(bt);        InOrder(bt->right);    }}void InOrder(BTree bt){    InitStack(S);    BTree p=bt;    while(p||!IsEmpty(S)){        if(p){            Push(S,p);            p=p->left;        }else{            Pop(S,p);            visit(p->data);            p=p->right;        }    }}后序void PostOrder(BTree bt){    if(!bt){        PostOrder(bt->left);        PostOrder(bt->right);        visit(bt);    }}void PostOrder(BTree bt){    InitStack(S);    BTree p=bt;    BTree r=NULL;    while(p||!IsEmpty(S)){        if(p){            Push(S,p);            p=p->left;        }else{            GetTop(S,p);            if(p->right!=NULL&&p->right!=r){                Push(S,p);                p=p->right;            }else{                Pop(S,p);                visit(p->data);                r=p;                p=NULL;            }        }    }}行序void LevelOrder(BTree bt){    if(!bt)return;    BTree p;    Enque(Q,bt);    while(!IsEmpty(Q)){        Deque(Q,p);visit(p->data);        if(!p->left){            Enque(Q,p->left);        }        if(!p->right){            Enque(Q,p->right);        }        //if(front==last){        //level++;        //last=rear;        //}    }}
原创粉丝点击