学习日记

作者在寒假期间克服懒惰,早起学习编程。通过观看中国大学MOOC课程,深入理解了二叉树的特性及其遍历方式,包括前序、中序和后序遍历的区别。此外,还成功实现了二叉树的创建与前序遍历的程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习日记----01

2020-02-18

今天是个好日子。武汉新增病例第一次是个两位数,新型病毒肺炎逐渐得到了控制。今天天气也很不错,在响亮的闹钟声中,我不得不爬起来开始一天的生活。首先是点名,然后我完成了昨天未完成的java下载和环境设置,在帮同学也下载完成后,我正式开始了学习。

我先看了mooc中国大学的网课,了解了二叉树的深度及它的一些特性,并且知道了它一个有趣的特点:
在这里插入图片描述
无论前序中序还是后序遍历,这个二叉树始终都是按照上图的路线进行移动,每个点其实都经过了三次,不同的是访问它们的时间不一样,前序的遍历即第一次经过每个点时即访问了该点(即图中的圈×),而中序遍历只在左边时第二次遍历到才进行访问(即图中的星星),后序遍历则只在左边时第三次遍历到第一个访问节点的父节点才进行访问(即图中的三角形)。
(行叭我也不知道我这样讲解对不对但是我确实被这个帮着强行理解了。。。)

除此之外,我还敲出来了二叉树建立(前序)并前序遍历的程序(哈哈哈哈当时确实难住了我好久)

struct tree
{
    char data;
    struct tree *lchild,*rchild;
}node;
void createtree(struct tree **P)
{
    char ch;
    scanf("%c",&ch);
    if(ch=='#')
        (*P)=NULL;
    else
    {
        (*P)=(struct tree*)malloc(sizeof(node));
        (*P)->data=ch;
        createtree(&(*P)->lchild);
        createtree(&(*P)->rchild);
    }
}

这是在一位热心同学的帮助下我知道了变量传递如果要更改那个变量的话我要将它的指针传递到下一个方程,对于指针也是一样的,所以上面代码的传递就有了**P这样的存在。这个时候我才发现原来以前我写的程序里变量确实是在传递,但是它并没有改变因此都是没有用指针,当然我可能碰到过,但肯定没有注意(哈哈)。

void printftree(struct tree *P)
{
    if(P=='\0')
        return;
    else
    {
        printf("%c",P->data);
        printftree(P->lchild);
        printftree(P->rchild);
    }
}

相对于上面那段代码,这里传递的变量并没有改变,因此不需要传递指针。

今天收获还是很大的。毕竟今天算是寒假起得最早的一天(被迫 )毕竟,我果然还是要有点危机感,安逸真的很容易就让我堕落(哭)。

不管怎么样,今天还是挺让人觉得充实的,希望明天也可以继续这样。奥里给!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值