二叉树的简单实现(3种遍历)


所谓遍历,即按照某种规律或顺序访问树中的全部节点,且每个节点只访问一次。

在访问节点信息时输出节点中的信息。


标准二叉树包括左、右、根三个部分,则我们可以通过递归的方法来访问输中的信息。


二叉树的遍历主要分为:1、先序遍历:根——左——右

    2、中序遍历:左——根——右

    3、后续遍历:左——右——根



太多的文字信息不如直接上代码理解,所以直接上代码:


#include <iostream>

using namespace std;

typedef struct BiTNode{
    char data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

BiTNode *createBiTree()//创建树
{
    BiTNode *T;
    char data;
    cin>>data;
    if(data=='#') T=NULL;//这里的#是让程序知道在创建时#的位置表示空

    else
    {
        T=(BiTNode*)malloc(sizeof(BiTNode));
        T->data=data;
        T->lchild=createBiTree();
        T->rchild=createBiTree();
    }
    return T;
}

void visit(BiTNode *T)//输出
{
    if(T->data!='#')
    {
        cout<<T->data<<" ";
    }
}

void preorder(BiTNode *T)//先序
{
    if(T!=NULL){
        visit(T);
        preorder(T->lchild);
        preorder(T->rchild);
    }
}

void postorder(BiTNode *T)//后序
{
    if(T!=NULL)
    {
        postorder(T->lchild);
        postorder(T->rchild);
        visit(T);
    }
}

void Inorder(BiTNode *T)//中序
{
    if(T!=NULL)
    {
        Inorder(T->lchild);
        visit(T);
        Inorder(T->rchild);
    }
}

int main()
{
    BiTNode *T;
    T=createBiTree();
    cout<<"先序:";
    preorder(T);
    cout<<endl;
    cout<<"中序:";
    Inorder(T);
    cout<<endl;
    cout<<"后续:";
    postorder(T);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值