二叉树的遍历

二叉树,顾名思义就是一棵根节点最多只有两个子节点(即左孩子与右孩子);今天主要讲的是二叉树的遍历,二叉树的遍历主要按次序遍历分为:前序遍历、中序遍历、后序遍历与层序遍历;如图:
这里写图片描述
首先,在此先声明一下,这四种二叉树的遍历都是利用了函数的递归方法来进行遍历的;我觉得前三种的遍历方式都是按照判断左右孩子是否存在、根节点打印输出时的位置来进行遍历的;

前序遍历:
遍历顺序是按照:先打印根节点->判断左孩子是否存在->判断右孩子是否存在;

void f(Bitree T)
{
    if(T==NULL)
        return ;
    printf("%c",T->data);//打印根节点;
    f(T->lchirld);       //判断左子树是否存在;
    f(T->rchirld);       //判断右子树是否存在;
}

这里写图片描述
该二叉树的前序遍历的顺序为:ABDECF

中序遍历:
遍历顺序是按照:判断左孩子是否存在->打印根节点->判断右孩子是否存在;

void f(Bitree T)
{
    if(T==NULL)
        return ;
    f(T->lchirld);       //判断左子树是否存在;
    printf("%c",T->data);//打印根节点;
    f(T->rchirld);       //判断右子树是否存在;
}

这里写图片描述
该二叉树的前序遍历的顺序为:DBEACF

后序遍历:
遍历顺序是按照:判断左孩子是否存在->判断右孩子是否存在->打印根节点;

void f(Bitree T)
{
    if(T==NULL)
        return ;
    f(T->lchirld);       //判断左子树是否存在;
    f(T->rchirld);       //判断右子树是否存在;
    printf("%c",T->data);//打印根节点;
}

这里写图片描述
该二叉树的前序遍历的顺序为:DEBFCA

层序遍历:
层序遍历顾名思义就是逐层遍历;
这里写图片描述
该二叉树的遍历为:ABCDEF

总结:任意二叉树的遍历都是利用函数的递归的方法进行遍历的;且任意的二叉树的遍历都是从根节点出发的,至于根节点的打印输出顺序由遍历的方式所决定的;从代码片中可以看出,二叉树的遍历顺序由根节点的打印输出有关。

二叉树遍历的应用:
问题例如:已知一棵二叉树的前序遍历次序与中序遍历的次序,求后序遍历的次序?

*有关二叉树的遍历的两条性质:
1.已知二叉树的前序遍历与中序遍历,可确认一棵二叉树;
2.已知二叉树的中序遍历与后序遍历,可确认一棵二叉树;*

但是,已知前序遍历与后序遍历,不能确认一棵二叉树!
例如,已知前序遍历为:ABC,后序遍历为:CBA,
可生成如图的二叉树:
这里写图片描述
END…..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值