10.6之补10.5

反思与总结乃是学习的一部分!

昨天学了啥。。

一,P1200

    1,不同类型的不能乱乘吧。char类型虽然是数字你也得把它转换成int类型的。

    2,关于string中length()的用法。length测出的应该是字符串的长度再加上最后一个换行符好像是。但事实上并不是,仍然是字符串本来的长度。那我来看看最末位是什么,最末位什么也没有 。空格?输出不加换行符试一下

。是个空格。

同时跟这个对应的问题是,你string是从0开始计数的,如果你不注意的话可能在这块翻跟头。

举个例子吧,假如你要遍历这个字符串,那么你必须i从0开始,到length-1结束。

    3,每做一个题,用自己的方法做完,也要看看别人的代码好在哪里,同时想想有什么其他的方法没有。在这方面之前的堆和快排我做的不是很好!应该是要回顾的。

    4,比如我这个跟别人高赞的题解比较来看,起码的变量定义的位置,但是你要知道为什么。我百度了下这就涉及到了全局变量和局部变量这个东西了。这个就又涉及到静态内存和动态分布了。。这个再深入吧。

二,树。

    1,什么是树?

一种递归定义的数据结构。

    2,什么是二叉树?

从名字上来看,每个节点有两个儿子。同时最重要的特点是有序。

    3,如何存储一棵树?

(1)采用最暴力直接的方法也就是邻接矩阵的方法。若一个树有n个节点,那么开一个n^2大的空间用来存储哪些点相连。

算了这个图片是真丑。根据我的简单定义,很明显浪费空间太大了。但是思路是顺承的。

(2)我们的思路一直就是记录下一个点与哪些点相连,这也就是记录下了所有的边。

那么我们对每个点开一个数组,记录下那些点跟它有边相连即可。

所以问题就是每个点要开多大呢?我们用什么来开呢?

从这里就可以分开了,我们可以选择用vector,众所周知,vector是动态规划空间的。

另外我们还可以用数组模拟链表即所谓的前向星。

代码实现?

    4,关于二叉树的存储和遍历。

(1),二叉树有三种遍历方法,主要的区分方法在于你把根的位置放哪。

先序:根->左->右

中序:左->中->右

后序:左->右->中

根据我的测试,除了先序你做的都不好。

(2)二叉排序树的遍历

对了你得明白二叉排序树的定义,二叉树的前提下加上中序遍历有序。也就是上面节点的值满足左<中<右。

虽然你是写过一遍的人但我打赌你啥都不会。

这块得好好学习一下。

 确实原理不懂。

posted @ 2019-10-06 11:41  北月真好  阅读(105)  评论(0编辑  收藏  举报