式存储二叉树,设计一个算法按从左到右的顺序输出一个二叉树的所有叶子结点值

本文介绍了如何设计算法,以先序遍历的方式,按从左到右的顺序输出链式存储二叉树的所有叶子节点。通过递归方法,首先判断节点是否为叶子节点(左右子节点均为空),若是则输出其值,然后继续遍历其左右子节点。
摘要由CSDN通过智能技术生成
#链式存储二叉树,设计一个算法按从左到右的顺序输出一个二叉树的所有叶子结点值
#建立在输出二叉树的所有结点的算法的基础上,输出叶子结点首先要去访问每一个结点,然后如果是叶子结点的话就输出,
#不用去管是否是从左到右输出,因为递归访问本身就是先左后右的
#判断链式存储结构中结点是否为叶子结点:这个结点的lchild与rchild域都为空
#链式存储二叉树,设计一个算法按从左到右的顺序输出一个二叉树的所有叶子结点值
#建立在输出二叉树的所有结点的算法的基础上,输出叶子结点首先要去访问每一个结点,然后如果是叶子结点的话就输出,
#不用去管是否是从左到右输出,因为递归访问本身就是先左后右的
#判断链式存储结构中结点是否为叶子结点:这个结点的lchild与rchild域都为空

def Displeaf1(bt):#以先序遍历为例
    #当操作二叉树的时候,有上下两段代码,第一段的代码的原因是一般引用一棵树,这棵树会有一个名字,但我们操作二叉树的代码时通常以结点的指针作为操作对象,所以做一个中间商转换
    _Displeaf1(bt.b)#bt.b就是一个转换
def _Displeaf1(t):
    if t!=None:#遍历每一个结点,只要不空就继续访问每一个结点
        if t.lchild==None and t.rchild==None:#判断是否为叶子结点
            print(t.data,end='')
        _Displeaf1(t.lchild)#遍历左孩子结点
        _Displeaf1(t.rchild)#遍历右孩子结点


#或者用递归的思想(尽管我认为这个并不能多好的体现递归思想)
#遇到一个结点,如果是叶子结点就输出(之后返回上一层递归),如果不是叶子结点,就去访问结点的左子树右子树
def Displeaf4(bt):
    _Displeaf4(bt.b)
def _Displeaf4(t):
    if t!=None:#遍历每一个结点,只要不空就继续访问每一个结点
        if t.lchild==None and t.rchild==None:#判断是否为叶子结点
            print(t.data,end='')
    else:
        _Displeaf4(t.lchild)#遍历左孩子结点
        _Displeaf4(t.rchild)#遍历右孩子结点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏歌~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值