学习日记----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);
}
}
相对于上面那段代码,这里传递的变量并没有改变,因此不需要传递指针。
今天收获还是很大的。毕竟今天算是寒假起得最早的一天(被迫 )毕竟,我果然还是要有点危机感,安逸真的很容易就让我堕落(哭)。
不管怎么样,今天还是挺让人觉得充实的,希望明天也可以继续这样。奥里给!!!