二叉树的四种遍历实现

来源:互联网 发布:touch.js解读 编辑:程序博客网 时间:2024/06/10 21:45

二叉树的四种遍历实现

#include<iostream>#include<queue>using namespace std;typedef struct BTNode{    int data;    struct BTNode *lchild,*rchild;}BTNode,*BTree;//二叉树节点queue<BTree> q;//声明队列void Create_Tree(BTree *T)//先序创建二叉树,0表示该子树为空树{    int cd;    cin>>cd;    if(0==cd) *T=NULL;    else    {        *T=new BTNode;        (*T)->data=cd;        Create_Tree(&(*T)->lchild);        Create_Tree(&(*T)->rchild);    }}void DLR(BTree T)//先序遍历{    if(T!=NULL)    {        cout<<T->data<<" ";        DLR(T->lchild);        DLR(T->rchild);    }}void LDR(BTree T)//中序遍历{    if(T!=NULL)    {        LDR(T->lchild);        cout<<T->data<<" ";        LDR(T->rchild);    }}void LRD(BTree T)//后序遍历{    if(T!=NULL)     {           LRD(T->lchild);        LRD(T->rchild);        cout<<T->data<<" ";    }}void LevelOrderTraverse(BTree T)//层序遍历{    cout<<T->data<<" ";    if(T->lchild) q.push(T->lchild);    if(T->rchild) q.push(T->rchild);    q.pop();    if(!q.empty()) LevelOrderTraverse(q.front());}int main(){    BTree T;    cout<<"先序创建二叉树:";    Create_Tree(&T);    cout<<"前序遍历:";    DLR(T);    cout<<endl;    cout<<"中序遍历:";    LDR(T);    cout<<endl;    cout<<"后序遍历:";    LRD(T);    cout<<endl;    cout<<"层序遍历:";    q.push (T);    LevelOrderTraverse(q.front());    cout<<endl;    return 0;}

程序运行图:
这里写图片描述

0 0
原创粉丝点击