二叉树的学习

void PreorderPrintLeaves(BinTree BT) {
    if (BT == NULL) {
        return;  // 空树,直接返回
    }
    
    // 如果是叶结点,输出
    if (BT->Left == NULL && BT->Right == NULL) {
        printf(" %c", BT->Data);  
    }
    
    // 递归遍历左子树
    PreorderPrintLeaves(BT->Left);
    
    // 递归遍历右子树
    PreorderPrintLeaves(BT->Right);
}

在书写这个代码的过程中,我们可以归纳出树的编写特点,我们根据是哪种排列顺序进而得出我们递归的顺序,要注意对树是否为空进行判断,单独输出,因为该题的编写是根据先序排列的方式所以我们使用的是先进行是否为叶子节点的判断,然后进行左子树、右子树的递归

在对于二叉树的学习当中,我在根据题目所给的二叉树图像进行二叉树的历遍当中,我们可以使用先序排列、中序排序和后序排序,根据所学的转换方法的知识点,我将其化为更为简单的方法去理解,当我们使用先序排列时,我们在每个节点的左边画个小圆圈,然后我们从根节点开始进行连线,按照先左后右的顺序进行,这在我们后续的二叉树的建立当中,我们根据题目所给的先序排列或后序排列和中序排列可以进行二叉树的构建,我们不断使用递归的手法进行二叉树的建立,第一步我们是对比寻找到根节点,然后进行左右子树的建立,其中含有各自的左子树的先序排列和中序排列。在这其中的代码书写过程当中,我们需要关注我们所选的排列方式,进而去去构建我们的历遍函数。在我们后续的线索化二叉树当中,我们利用树当中的空指针域进行信息的标记,这意味着我们对于空间的更全面的利用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值